validation 時、rule 別にエラーメッセージを切り替える方法

cake1.2の話

CakePHP では view で エラーメッセージを指定することで
任意のエラーメッセージを出力できます。

{$form->error('name', 'ちょwww名前wwwww')}

rule が一つの場合ならこれでも問題ないのですが、
メールアドレスの validation など、
入力が無い場合と入力値が不適切な場合で
違うエラーメッセージを表示したい場合には
view だけでは実現できません。


そんな時には
model の $validate を以下のように指定すれば OK です。

class User extends AppModel {

	var $name = 'User';
	var $validate = array(
		'name' => array(
			'rule'=>VALID_NOT_EMPTY, 
			'message'=>'名前を入力してください'
			),
		'email' => array(
			array(
				'rule'=>VALID_EMAIL, 
				'message'=>'メールアドレスが不適切です。'
				),
			array(
				'rule'=>VALID_NOT_EMPTY, 
				'message'=>'メールアドレスを入力してください'
				),
		),
		'comment' => array(
			'rule'=>VALID_NOT_EMPTY, 
			'message'=>'コメントを入力してください'
			),
	);

}

manual には書いてないけど、ソースには書いてありました。
よくありますね、こういうこと。