CakePHP2.xログインバリデーション(入力チェック)の設定をしたので記録しておきます。
確認環境はCakePHP2.10.2です。
公式
https://book.cakephp.org/2.0/ja/models/data-validation.html
色々試しながら作ったバリデーションのサンプル↓
バリデーションのサンプル
User.php モデル
/**
* 入力チェック
*/
public $validate = array(
'username' => array(
'required' => array( // 適当にルール名をつける
'rule' => 'notBlank',
'allowEmpty' => false,
'message' => 'ユーザ名を入力してください。'
),
'alphaNumeric' => array( // 適当にルール名をつける
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'ユーザ名を半角英数字のみで入力してください。',
),
'duplicate' => array( // 適当にルール名をつける
'rule' => array('limitDuplicatesUsername'),
'message' => 'このユーザ名は登録済みです。'
),
),
'password' => array(
'required' => array( // 適当にルール名をつける
'rule' => 'notBlank',
'allowEmpty' => false,
'message' => 'パスワードを入力してください。'
),
'alphaNumeric' => array( // 適当にルール名をつける
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'パスワードを半角英数字のみで入力してください。',
),
'minlength' => array( // 適当にルール名をつける
'rule' => array('minLength', 8),
'message' => 'パスワードは8文字以上で入力してください。'
),
),
'email' => array(
'required' => array( // 適当にルール名をつける
'rule' => 'notBlank',
'allowEmpty' => false,
'message' => 'メールアドレスを入力してください。'
),
'validEmail' => array( // 適当にルール名をつける
'rule' => array('email', true),
'message' => 'メールアドレス形式で入力してください。'
),
'duplicate' => array( // 適当にルール名をつける
'rule' => array('limitDuplicatesEmail'),
'message' => 'このメールアドレスは登録済みです。'
),
),
);
public function limitDuplicatesUsername($check) {
return !$this->findByUsername($check['username']);
}
public function limitDuplicatesEmail($check) {
return !$this->findByEmail($check['email']);
}
適当にルール名をつけるという行は自分で決められます。duplicateとか。
limitDuplicatesxxxというメソッドは独自バリデーションです。
エラーの場合falseになるように返します。
