質問: cakephpのバリデーションについて質問です。 フォームから入力された値を、そのままの値でDB登録したり、また計算してから登録しようと思っています。 modelのvalidateを使うと、テーブル定義してあるカラムは簡単に入力チェックできると思いますが、 それ以外の項目は、コントローラーのメソッドに自分で入力チェックプログラムを書くしかバリデーションする方法はないのでしょうか? 何か良い方法をアドバイスしてください。 また、そういうことが書かれているURLがあれば教えてください。 どのサンプルを見ても、フォームからDB登録の一直線なんですよね。
回答: コントローラ内でinvalidateを使います。 例えばメールアドレスの重複登録を防ぐ場合、 (※$id = フォームに入力されたメールアドレス) if($em = $this->User->findbyEmail($this->data['User']['email'])){ if($id != $em['User']['id']){ $this->User->invalidate('mail_duplicated'); } } みたいなことをして、ビューで下記のようにすればOKです。 $html->tagErrorMsg('User/mail_duplicated', 'このメールアドレスは既に登録されています。') あたりが参考になるかと。