1

ユーザー登録フォームには、パスワードとパスワード2があるため、ユーザーはパスワード2xを入力する必要があり、登録する前に互いに等しくする必要があります。この場合、検証ルールは正常に機能します。ユーザー情報の更新フォーム。password と password2 の両方を空白に設定しているため、ユーザーが最初の password フィールドまたは password2 フィールドに値を入力しない場合、システムはユーザー モデルの一時変数に保存した現在のパスワードを単純に保存します。ここまでは順調ですね。私が望むのは、登録時と同じ検証ルールをすべてトリガーすることですが、ユーザーが最初のパスワードフィールドに値を入力した場合にのみ、それ以外の場合は空白のままにして無視します。したがって、これはある種の条件付き検証だと思います。

ユーザーモデルでは:

$validate = array(
'password' =>  array(                           
'password_notempty'=>array(
'rule' => 'notEmpty',
 'message' => 'Required field',
 'on' => 'create')
 ,
 'password_between'=>array(
 'rule' => array('between', 5, 15),
 'message' => 'Between 5 to 15 characters',
 'on' => 'create')
 ,
'password_alphanumeric'=>array(
'rule' => 'alphaNumeric',
'message' => 'Characters and numbers only',
'on' => 'create')
),
'password2' => array(
'password2_isequal' =>array(
'rule' => array('comparePasswords','password'),
'message' => 'Must be same value as password.')
)
);

これを達成する方法についてのアイデアはありますか?

4

2 に答える 2

0

これはあなたが始めるのに役立つはずです: http ://www.dereuromark.de/2011/08/25/working-with-passwords-in-cakephp/

必要な検証を作成する方法の例については、コードを参照することもできます。

基本的に、常に別のフィールドを使用し、実際に何かが入力された場合にのみ実際のフィールドにマップします。また、確認フィールドを含めることを忘れないでください(正しく入力されたパスワードを再入力して確認するため)

この記事では、3〜4行のコードですべての動作を実現する方法について説明しています。

于 2012-07-27T00:51:35.150 に答える
0
read below url :-

http://book.cakephp.org/1.3/view/1143/Data-Validation

http://book.cakephp.org/1.3/view/1152/Core-Validation-Rules

//またはこれを試してください:-

$validate = array(
'new_password' => array(
    'between' => array(
            'rule' => array('between', 5, 20),
            'allowEmpty' => false,
            'message' => 'You password must be between 7 and 20 characters long')),
'password' => array(
    'between' => array(
            'rule' => array('between', 5, 20),
            'allowEmpty' => false,
            'message' => 'You password must be between 7 and 20 characters long')),
 'retype_password'=>array(
    'rule'=>array('equalTo','password'),
    'message'=>'Password does not match'),
'repeat_password'=>array(
    'rule'=>array('equalTo','new_password'),
    'message'=>'Password does not match'),           
);
于 2012-07-27T04:06:03.467 に答える