无法使用beforeValidate初始化变量

时间:2014-08-28 19:01:12

标签: php cakephp

我有一个在AppModel.php中指定的自定义行为,它会根据所选语言自动创建一个字段。因此,根据所选语言,name_eng - > namename_fra - > name

...
$virtualField = sprintf($model->name.'.'.$name.'_%s', Configure::read('Config.language'));
$virtualFields[$name] = $virtualField;
$model->virtualFields = $virtualFields;
...

这部分有效。

当我提交编辑表单时出现问题,出现验证错误,并且在显示编辑视图时出现错误提示,该字段不可用。我认为这是由于我的行为未在此过程中被调用或$this->request->data是否使用表单数据创建?

我想我会使用beforeValidate初始化值。但是,它没有成功:一旦我提交了表单,该字段仍然不存在,这会给我这个错误:

AppModel.php

function beforeValidate(array $options = array()){
    //hard coded for test purposes
    $this->data['CertificateType']['name'] = $this->data['CertificateType']['name_'.Configure::read('Config.language')]
    return true;
}

在视图中(edit.ctp):

echo $this->request->data['CertificateType']['name'];

基本上,我如何复制自定义行为的功能并在提交表单后初始化我的字段但是没有验证?

1 个答案:

答案 0 :(得分:0)

最终需要的逻辑放在AppController.php中。现在一切都很好。