Yii2客户端验证不会验证规则

时间:2018-06-02 18:06:54

标签: yii2 yii2-advanced-app

我有一个活动表单,其中包含那些验证堆栈:

'enableAjaxValidation' => true,
'enableClientValidation' => true,
'validateOnBlur' => false,

在模型中我的规则如下:

 public $new_password;

    public $current_password;

    public function rules()
    {
        $rules = parent::rules();

        $rules[] = ['password', 'required', 'on' => ['create', 'register']];
        $rules['currentPasswordRequire'] = ['current_password', 'required', 'on' => ['update']];
        $rules['currentPasswordValidate'] = ['current_password', function ($attr) {
            if (!Password::validate($this->$attr, $this->password_hash)) {
                $this->addError($attr, Yii::t('app', 'Invalid password'));
            }
        }, 'on' => ['update']];

        return $rules;
    }

它是来自dektrium扩展的用户模型(该模型扩展了基本的dektrium用户模型)。现在,当我尝试提交表单时,如果$current_password为空,则客户端验证按预期工作。不要让我提交它。但是如果我用一些字符填充它(不是正确的密码)并且我提交它,则重新加载页面并且错误低于输入(无效的passowrd)。为什么第一条规则是由客户端验证处理而不是第二条规则处理的?提前谢谢!

0 个答案:

没有答案
相关问题