CakePHPでのFormのバリデーション

こんなパスワード覚えられないよなぁ。

先日jQueryでのFormのバリデーションを書きましたが、CakePHPの場合、CakePHPで用意されています。


echo $html->input('User/name', array('type'=>'text','size'=>10));
echo $html->tagErrorMsg('User/name', '<span id="error_msg">名前は必須です</span>');

上記のようにhtmlhelperでtagErrorMsgを書いておけば、名前が無記入だった時、エラーメッセージ「名前は必須です」が表示されます。(tagErrorMsgを書いた場所に)
ただ、実は上記だけではだめでUserのModelに


class User extends AppModel {
	var $name = 'User';
	var $validate = array(
		'name' => VALID_NOT_EMPTY
		);
}

という感じに$validateを定義しておく必要があります。

VALID_NOT_EMPTYは空はエラーという意味で、

・VALID_EMAIL:メールアドレスの形式(aaa@aaa.com)じゃないとエラー

・VALID_NOT_EMPTY:空だとエラー

・VALID_NUMBER:数字じゃないとエラー

・VALID_YEAR:年(1000-2999)じゃないとエラー

があるっぽいです。

ちなみに入力エラーの場合、エラー箇所にエラーメッセージが表示されて、正常なところは値が保存されます。
(入力されていた値がフォームに入力されたままになってる)
これは非常に便利なんですが、いちいちクリアしたいと言う場合があったので、そのときは


echo $html->input('User/name', array('type'=>'text','size'=>10, 'value'=>''));
echo $html->tagErrorMsg('User/name', '<span id="error_msg">名前は必須です</span>');

という感じで、valueに空文字列を与えておけばOKでした。

以上

コスミー について

昔(?)はゲーム作ってました。 今もなんか作ろうとしています。
カテゴリー: PHP, フレームワーク パーマリンク

CakePHPでのFormのバリデーション への1件のフィードバック

  1. 匿名 のコメント:

    Add Your Comment

コメントを残す

メールアドレスが公開されることはありません。