CakePHP のバリデーションでエラーメッセージが2重で表示される

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回入るということです。

コメント

コメントは受け付けていません。