重复密码在 Yii2 中不起作用
Repeat Password does not work in Yii2
我在模型中写了如下规则:
public $password_repeat;
/**
* @inheritdoc
*/
public function rules()
{
return [
....
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
];
}
如果我在 Password
和 Password Repeat
字段中使用不同的密码,则会出错。所以,这意味着它有效。但问题是,如果 Password Repeat
字段为空,它不会给出任何错误。
也为 password_repeat 添加一个必需的标签。如下图
return [
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'required'],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
];
另一种方法是将 $skipOnEmpty 变量设置为 false:
return [
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"],
];
这样做的好处是,如果密码中也有值,您可以只将重复密码字段设置为必填项。
我在模型中写了如下规则:
public $password_repeat;
/**
* @inheritdoc
*/
public function rules()
{
return [
....
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
];
}
如果我在 Password
和 Password Repeat
字段中使用不同的密码,则会出错。所以,这意味着它有效。但问题是,如果 Password Repeat
字段为空,它不会给出任何错误。
也为 password_repeat 添加一个必需的标签。如下图
return [
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'required'],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ],
];
另一种方法是将 $skipOnEmpty 变量设置为 false:
return [
....
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"],
];
这样做的好处是,如果密码中也有值,您可以只将重复密码字段设置为必填项。