CakePHP のバリデーションを使っている場合に、フォームヘルパーで作成したフォームからエラーが2重で表示される場合は、コントローラーで2重でデータをチェックしていないかについてチェックします。
例えば、以下のようにバリデーションを実装するのかと思っていました。
1 2 3 4 5 6 | $this->Model->save($data); if($this->Model->validates()) { echo 'Success'; } else { echo 'Error'; } |
しかし、実際は以下のように実装するようです。
1 2 3 4 5 | if($this->Model->save($data)) { echo 'Success'; } else { echo 'Error'; } |
$this->Model->validates() は真偽のチェックではなく、コントローラー内でバリデーションを行うメソッドとなります。つまり、モデル内で $this->save() でデータを保存しようとして、さらに $this->Model->validates() をコントローラー内で使っていると2回のバリデーションでエラーが2回入るということです。
コメント