0

我有一个包含多个模型的表格。模型中的验证似乎是正确的,并且模型正确关联。但是如何使两个模型中的无效字段无效并将显示错误传递回表单?

我的用户中的代码)_controller.php 是:

$errors = $this->User->invalidFields(array('fieldList' => array('password','cpassword','firstname','lastname','email')));

$this->User->set('errors',$errors);

但我有一个像这样链接的 Profile 模型:

$this->User->Profile

并希望它对 Profile.zip 无效。

4

2 回答 2

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 子句之前,它们都会被执行。

于 2012-06-01T09:02:16.787 回答
0

我建议不要在无效字段数组中手动​​设置错误,而是使用$validate数组来设置验证规则。

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

于 2012-06-01T08:06:34.023 回答