自定义规则验证无效 - Yii2

时间:2015-09-29 02:46:51

标签: php validation yii2 custom-validators

你能帮我解决这个问题吗?我确实阅读过这些文件,但规则仍然无效。我做错了吗?我仍在寻找一些例子,但仍然没有发生任何事情。我想验证用户的密码和repeat_password(如果匹配)。

这是我在模型中的代码。 在这种情况下,这两个也被声明为必需。

[['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,我不想使用密码验证器小部件(?)。谢谢。

3 个答案:

答案 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]); ?>