无法使用beforeValidate初始化变量
问题描述:
我有一个自定义行为,在AppModel.php中指定,可根据所选语言自动创建一个字段。因此,取决于所选择的语言,name_eng
→name
或name_fra
→name
。无法使用beforeValidate初始化变量
...
$virtualField = sprintf($model->name.'.'.$name.'_%s', Configure::read('Config.language'));
$virtualFields[$name] = $virtualField;
$model->virtualFields = $virtualFields;
...
这部分工作。
当我提交编辑表单时,出现验证错误,并且在编辑视图出现错误提示时该字段不可用时出现问题。我相信这是由于我的行为在这个过程中没有被调用,或者是使用表单数据创建的吗?
我想我会使用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'];
本质上,如何复制自定义行为的功能并在表单提交但未验证之后初始化我的字段?
答
最终需要的逻辑放在AppController.php中。现在一切正常。