CakePHP2.xログインバリデーションの設定

CakePHP2.xログインバリデーションの設定

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になるように返します。

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です