Web無料相談会2018冬
Web無料相談会2018冬
2008.03.19

CakePHPのバリデーションについてメモ

づや

Modelに下のように複数バリデーションが書いてある場合に、一定の条件のときだけ
一定の条件だけユニークのチェックをはずしたかった。

var $validate = array(
	'mail_add' => array(
	        'rule1' => array('rule' => array('email'),'message'=>'メールアドレスの形式をご確認ください'),
		'unique' => array('rule' => array('unique'),'message'=>'そのメールアドレスは登録済みのため使用できません'),
	        'required' => array('rule' => VALID_NOT_EMPTY,'message'=>'メールアドレスは必須入力です'),
		),
	);

具体的に言うと、新規登録の場合はユニークのチェックをするが、
編集画面から来たときはユニークのチェックをさせない動きにしたかった。

コントローラー側で

unset($this->Model->validate['mail_add']['unique']);

とやってから、バリデーションをすると、ユニーク以外のバリデーションだけ実行してくれた。

正しいやり方なのかはわからにけど、とりあえずメモっとく。