这是我在模型中的代码。 在这种情况下,这两个也被声明为必需。
[['password','password_repeat'], 'checkPassword', 'on'=>'create'],
该场景也在actionCreate上声明。
public function checkPassword($attributes, $params)
{
if(!$this->password_repeat === $this->password)
{
$this->addError($attribute, 'Passwords do not match!');
}
}
我确实尝试在这两个字段上使用compare
验证,但它不会让我满意。如果只比较一个字段,则不会验证其他字段。如果你同时验证它们,当你删除你在两个字段之一上输入的内容时,它们仍有可能相互对比。所以我想创建一个甚至你删除你在这两个字段上输入的内容,无论是否先进入,它们都将被验证。抱歉,添麻烦了。我希望你仍然得到我想要发生的事情。感谢。
PS,我不想使用密码验证器小部件(?)。谢谢。
答案 0 :(得分:2)
您只需在model
文件中使用此验证,例如...
['password', 'compare', 'compareAttribute'=>'password_repeat', 'message' => 'Your error message'],
答案 1 :(得分:0)
在您的代码中。
$this->addError($attribute, 'Passwords do not match!');
检查你的varname $属性,它在你的函数声明中不存在。
public function checkPassword($attributes, $params)
AddError无法将错误分配给表单字段。
答案 2 :(得分:0)
试试吧
<?php $form = ActiveForm::begin(['enableAjaxValidation' => true]); ?>