1

在用户注册表单中,我有密码和密码2,因此用户必须输入密码 2x,并且在他/她注册之前它们必须彼此相等。在这种情况下,验证规则可以正常工作。在更新用户信息表单中。我将密码和密码 2 都设置为空白,这样如果用户没有在第一个密码字段或密码 2 字段中输入值,那么系统只会将当前密码保存在我的用户模型中的临时变量中。到目前为止,一切都很好。我想要的是触发与注册时相同的所有验证规则,但前提是用户在第一个密码字段中输入了一个值,否则留空并忽略。所以我想这是某种条件验证。

在用户模型中:

$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 回答