从 cakePHP 中的控制器调用静态模型函数
Calling a static model function from a controller in cakePHP
我正在尝试为 CakePHP 中的 select 框设置默认值。使用模型中的静态函数访问我的选项,该函数定义如下
public static function purpose($value = null)
{
$options = array(
self::PURPOSE_HOMECONSUMPTION => __('Home Consumption', true),
self::PURPOSE_COMMERCIAL => __('Commercial', true)
);
return self::enum($value, $options);
}
// Constants for status attribute
const PURPOSE_HOMECONSUMPTION = '0';
const PURPOSE_COMMERCIAL = '1';
在我看来,我通过以这种方式调用此静态函数来填充 select 框
echo $this->Form->input('purpose', array(
'type' => 'select',
'options' => Field::purpose()
果然它选择了选项,但默认值是 Home Consumption
。我想设置它Commercial
。我在控制器中尝试过类似的东西
$this->request->data['Field']['purpose'] = Field::purpose(1);
但是没用。关于如何调用控制器中的静态函数并将值设置为 Commercial
.
的任何想法
为什么您使用 class 常量然后不在代码中使用它们?
对我来说没有意义。
您正在将整数值解析为字符串。如果您想将它用作用您的枚举数据填充的下拉列表的默认值,那也没有意义。
从逻辑上讲,正确的方法是:
// The constant that holds the value 1
$this->request->data['Field']['purpose'] = ModelName::PURPOSE_COMMERCIAL;
另请注意,常量最好是实整数,并且您应该使用 tinyint(2) 作为博客代码中提到的 db 类型。
我正在尝试为 CakePHP 中的 select 框设置默认值。使用模型中的静态函数访问我的选项,该函数定义如下
public static function purpose($value = null)
{
$options = array(
self::PURPOSE_HOMECONSUMPTION => __('Home Consumption', true),
self::PURPOSE_COMMERCIAL => __('Commercial', true)
);
return self::enum($value, $options);
}
// Constants for status attribute
const PURPOSE_HOMECONSUMPTION = '0';
const PURPOSE_COMMERCIAL = '1';
在我看来,我通过以这种方式调用此静态函数来填充 select 框
echo $this->Form->input('purpose', array(
'type' => 'select',
'options' => Field::purpose()
果然它选择了选项,但默认值是 Home Consumption
。我想设置它Commercial
。我在控制器中尝试过类似的东西
$this->request->data['Field']['purpose'] = Field::purpose(1);
但是没用。关于如何调用控制器中的静态函数并将值设置为 Commercial
.
为什么您使用 class 常量然后不在代码中使用它们? 对我来说没有意义。
您正在将整数值解析为字符串。如果您想将它用作用您的枚举数据填充的下拉列表的默认值,那也没有意义。
从逻辑上讲,正确的方法是:
// The constant that holds the value 1
$this->request->data['Field']['purpose'] = ModelName::PURPOSE_COMMERCIAL;
另请注意,常量最好是实整数,并且您应该使用 tinyint(2) 作为博客代码中提到的 db 类型。