从 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 类型。