Pages

2018年11月6日火曜日

[CakePHP3] パスワードのバリデート (入力 値チェック)

基本的には bake で追加されるメソッド名でのバリデート形式の指定を行うが、正規表現を2回利用したい場合。

$validator
      ->minLength('password', 8, __('6文字以上を入力してください。'))
      ->maxLength('password', 50, __('20文字以下を入力してください。'))
      ->alphaNumeric('password', 'alphaNumeric', __('半角英数字のみ入力可能です。'))
     ->regex('password', '/[a-zA-Z]+/', __('半角英字を1文字以上利用してください。'))
     ->regex('password', '/[0-9]+/', __('半角数字を1文字以上利用してください。'))
      ->requirePresence('password', 'create')
      ->notEmpty('password');

こんな場合は上書きされてしまって、半角英字チェックは動かないので、
こういう場合のみ add で名前を変えて指定するようにして重複を回避する。

$validator
      ->minLength('password', 8, __('6文字以上を入力してください。'))
      ->maxLength('password', 50, __('20文字以下を入力してください。'))
      ->alphaNumeric('password', 'alphaNumeric', __('半角英数字のみ入力可能です。'))
      ->add('password', [
          'inAlpha' => [
              'rule' => ['custom', '/[a-zA-Z]+/'],
              'message' => __('半角英字を1文字以上利用してください。'),
          ],
          'inNumber' => [
              'rule' => ['custom', '/[0-9]+/'],
              'message' => __('半角数字を1文字以上利用してください。'),
          ],
      ])
      ->requirePresence('password', 'create')
      ->notEmpty('password');

  $validator
      ->notEmpty('password_conf')
      ->sameAs('password_conf', 'password', __('異なるパスワードが入力されています。'))
      ->requirePresence('password', 'create')
      ->notEmpty('password');

最初からこの記述を基本にすれば良いと思っていたけどやっぱり bake を基本にした方が効率が良い場面が多いので、
必要な場合のみ利用するようにしました。

regex メソッドの中を見ると解るけど rule としては custom という落とし穴に注意。

0 件のコメント:

コメントを投稿

Followers