CakePHP 一部のバリデーションルールを解除する
notoです。
CakePHPでバリデーションルールの一部を解除したいときがあるかと思いますが、今回はその方法についてです。
Cakeはバリデーション機能が優秀だと思いますが、例えば「パスワードを忘れたら」などの機能で
E-mailを入力させてメールを送信する際に、バリデーションを行うことがあるかもしれません。
isUniqueをバリデーションルールとして定義しておくと、入力されたメールアドレスが既に登録されているので、バリデーションエラーが発生してしまいます。
そこで、バリデーションを行う前に、isUniqueを外しておきたいとなるわけです。
バリデーション定義
emailフィールドに、このようなバリデーションが定義されているとします。
app/model/user.php
/** * バリデーション */ public $validate = array( 'email' => array( 'isUnique' => array( 'rule' => 'isUnique', 'message' =>'* 入力されたメールアドレスは既に登録されています。' ), 'email' => array( 'rule' => array('email',true), 'message' =>'* 正しいメールアドレスを入力してください。' ), 'notEmpty' => array( 'rule' => 'notEmpty', 'message' =>'* メールアドレスを入力してください。' ) ) );
一部のバリデーションを解除
バリデーション定義はUserモデルのvalidateプロパティにセットされているので、解除したいルールをunsetしてあげると、そのバリデーションルールはなかった事にされるわけです。
app/controller/users_controller.php
//ユニークバリデーションを解除 unset($this->User->validate['email']['isUnique']); if($this->User->validates()){ //hogehoge }
バリデーションルールの解除方法でした。
逆に特定の処理だけvalidateプロパティに、バリデーションルールを追加するってこともできるはずです。やったことないけど。。。
コメント 0