重复密码在 Yii2 中不起作用

2022-08-30 21:43:24

我在模型中编写了规则:

    public $password_repeat;

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        ....
        ....  
        ['password', 'required'],
        ['password', 'string', 'min' => 6],
        ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
    ];
}

如果我在和字段中使用不同的密码,则会出现错误。所以,这意味着它有效。但问题是,如果字段为空,它不会给出任何错误。PasswordPassword RepeatPassword Repeat


答案 1

还要为password_repeat添加所需的标记。所 示

return [
        ....  
        ['password', 'required'],
        ['password', 'string', 'min' => 6],
        ['password_repeat', 'required'],
        ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
    ];

答案 2

另一种方法是将$skipOnEmpty变量设置为 false:

return [
....  
    ['password', 'required'],
    ['password', 'string', 'min' => 6],
    ['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"],
];

这样做的好处是,如果密码中也有值,则仅允许您仅将重复密码字段设置为必需。


推荐