我正在尝试为CakePHP中的选择框设置默认值。我可以使用模型中的静态函数访问我的选项,该函数定义如下
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';
在我看来,我通过以这种方式调用此静态函数来填充选择框
echo $this->Form->input('purpose', array(
'type' => 'select',
'options' => Field::purpose()
当然它会选择选项,但默认值为Home Consumption
。我想设置它Commercial
。我在控制器中尝试过类似的东西
$this->request->data['Field']['purpose'] = Field::purpose(1);
但它不起作用。关于如何在控制器中调用静态函数并将值设置为Commercial
的任何想法。
答案 0 :(得分:3)
为什么使用类常量然后在代码中不使用它们? 对我毫无意义。
您正在将整数值解析为字符串。如果您想将其用作填充了枚举数据的下拉列表的默认值,那也没有意义。
逻辑上,正确的方法是:
// The constant that holds the value 1
$this->request->data['Field']['purpose'] = ModelName::PURPOSE_COMMERCIAL;
另请注意,常量最好是实数整数,并且您应该使用tinyint(2)作为博客代码中提到的db类型。