[Site] ユーザー登録(バリデーション)

タグ :

ユーザーテーブルへデータを登録するときのフォームへ入力があるか等の処理というのは、分岐命令にて「入力データが存在していれば、、、」とかを記述することで出来ますが、もっと簡単に行うようにするための機能を紹介します。

モデルのバリデーションを以下のように記述することで可能となります。

public $validate = array(
	'name' => array(
		'notempty' => array(
			'rule' => array('notempty'),
			'message' => 'Please input.',
		),
	),
	'username' => array(
		'notempty' => array(
			'rule' => array('notempty'),
			'message' => 'Please input.',
		),
		'harfWidthChar' => array(
			'rule' => array('custom', '/[^\\W]/u'),
			'required' => true,
			'message' => 'Please input the half angle alphanumeric.',
		),
		'unique' => array(
			'rule' => array('isUnique'),
			'message' => 'Cannot use the address.',
		),
	),
	'password' => array(
		'notempty' => array(
			'rule' => array('notempty'),
			'message' => 'Please input.',
		),
		'minLength' => array(
			'rule' => array('minLength', 8),
			'required' => true,
			'message' => '8 characters or more.',
		),
	),
);

このモデルにて実際に無記入で登録させてみると、

cake_user_add_2

ユーザー名とメールアドレスはちゃんとチェックしてくれました。
残念ながらパスワードは何も注意されません。

これは、コントローラの処理にて暗号化処理を行った後でバリデーション処理を行っているためです。
つまり、入力が無しの場合でも暗号化処理で適当な値に変換されてしまうので入力チェックに引っかからなかった訳です。

これに関しては暗号化を解除する訳にもいかないので、コントローラ内でチェック処理を追記することで妥協です。。。
今後の課題にしたいと思います。どなたか良い方法があれば教えてください。

Share

  • このエントリーをはてなブックマークに追加

Comment

コメントを残す

*がついている欄は必須項目です。

  • Twitter
  • Facebook
  • Google Plus
  • RSS Feed