User モデルがあるアプリケーションに CakePHP を使用しています。このユーザーには、検証する正規表現を持つパスワードがあります。正規表現は、少なくとも 1 つの数字と特殊文字を含む、少なくとも 6 文字の長さのパスワードを使用することをユーザーに強制します。
検証は次のようになります。
'password' => array(
'ruleName' => array(
'rule' => array('custom', '/^.*(?=.{6,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=]).*$/i'),
'message' => 'Password not legit',
'allowEmpty' => true
)
)
パスワードを編集したい場合、この検証はうまく機能します。しかし、ユーザーを編集したい場合 (パスワードを変更するオプションはありません)、$this->User->save() は失敗します。
$this->User->validationErrors をデバッグすると、表示されるのは次の 1 つだけです。
array(
'password' => '*****'
)
投稿データにパスワード フィールドが設定されていないため、検証はまったく行われません。この検証コードのブロックにコメントを付けると、ユーザーを救うことができます。
誰が私が間違っているのか知っていますか?