使多个模型中的字段无效

时间:2012-06-01 08:01:13

标签: cakephp cakephp-1.3 invalidation formhelper

我有一个包含多个模型的表单。模型中的验证似乎是正确的,并且模型正确关联。但是,如何从两个模型中使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。

2 个答案:

答案 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数组来设置验证规则,而不是在无效字段数组中手动​​设置错误。

如果内置的规则不够,您可以定义自己的复杂规则。