我正在重写CakePHP< = 2.2
的联系表单插件在模型中,只有没有数据库表的虚拟字段。
对于动态使用,我需要在$this->Model->validator()->add()
函数中使用beforeFilter()
动态添加验证。
这有效,但我在视图中没有得到任何验证错误。
它们仅在调用$this->Model->validationErrors
后存储在$this->Model->validates()
。
当我将验证移到$validate
变量时,一切似乎都有效。
刷新消息和"所需"我的输入字段中的属性已设置。
我认为问题是在将验证规则添加到模型之前呈现视图。
有什么建议吗?谢谢
答案 0 :(得分:0)
感谢Kai的想法!
这适用于模型:
public $validate = array();
public function __construct($id = false, $table = null, $ds = null) {
parent::__construct();
foreach(Configure::read('ContactForm.Fields') as $fieldname => $value) {
$this->validate[$fieldname] = $value['validation'];
}
}
配置如下所示:
Configure::write('ContactForm.Fields', array(
'Name' => array(
'schema' => array(
'type' => 'string',
'null' => false,
'default' => '',
'length' => '50'
),
'validation' => array(
'rule' => array('notempty'),
'required' => true,
'message' => 'please insert your name'
)
)
));
现在可以看到Flash消息;)