我有一个包含多个模型的表单。模型中的验证似乎是正确的,并且模型正确关联。但是,如何从两个模型中使invalidfield文件无效并将显示错误传递回表单?
我的用户中的代码)_controller.php是:
$errors = $this->User->invalidFields(array('fieldList' => array('password','cpassword','firstname','lastname','email')));
$this->User->set('errors',$errors);
但我有一个像这样链接的个人资料模型:
$this->User->Profile
并希望它将invalidFields发送到Profile.zip。
答案 0 :(得分:1)
你可以使用链接if条款,如下所述 http://www.dereuromark.de/2010/10/09/about-php-basics-and-pitfalls/
基本上,你使用&而不是&&所以,如果你有一个主要模型和相关数据:
$this->User->set($this->data);
$this->User->Profile->set($this->data);
if ($this->User->validates() & $this->User->Profile->validates()) {
//continue
}
单身&确保执行这两个条件(如果出现错误,则只会触发第一个条件,因此不会为相关模型呈现验证规则)
您也可以这样做:
$val1 = $this->User->validates();
$val2 = $this->User->Profile->validates();
if ($val1 && $val2) {}
这样他们都会在你进入if子句之前被执行。
答案 1 :(得分:0)
我建议使用$validate
数组来设置验证规则,而不是在无效字段数组中手动设置错误。
如果内置的规则不够,您可以定义自己的复杂规则。