0

複数のモデルを含むフォームがあります。モデルの検証は正しいようで、モデルは適切に関連付けられています。しかし、2 つのモデルのフィールドを無効にして、表示エラーをフォームに戻すにはどうすればよいでしょうか?

私の users)_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

http://www.dereuromark.de/2010/10/09/about-php-basics-and-pitfalls/で説明されているような連鎖if句を使用でき ます

基本的に、&&の代わりに&を使用します

したがって、メインモデルと関連データを取得した場合:

$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 に答える