检查 Yii 框架中的验证规则


Check validation rules in Yii framework

我是Yii框架的新手,所以我试图理解它的工作方式。我为创建表单的用户提供了以下验证规则,现在我需要的是检查 afterValidation() 方法,如果所有验证规则都传递了哈希用户密码。我不知道的是,Yii 是否有一个内置方法,如果验证规则是否通过,则返回 true 或 false。

 public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('email, password, username', 'required'),
            array('email, username, password', 'length', 'max'=>256),
            array('email, username', 'unique'),
            array('password', 'compare'),
            array('password_repeat', 'safe'),
        );
    }


 protected function afterValidate()
        {
            parent::afterValidate();
          if("VALIDATION RULES HAVE PASSED, ther is no error message")
{  
            $this->password = $this->encrypt($this->password);
}
        }
        public function encrypt($value)
        {
          return md5($value);
        }

您应该使用的方法$this->hasErrors(),因为您的表单验证已经执行。嵌套错误的可能原因是因为它在每次$this->validate()后调用您的afterValidate(),因为我认为如果执行验证并且您最终会得到无限循环,则会自动调用它

相反,

如果在验证周期中运行的afterValidate()中放入任何东西,我认为您想将代码放入beforeSave()

仅当验证规则运行且没有错误时,才会运行beforeSave()

作为奖励:如果你只是在做标准密码的东西,请考虑使用 Yii 密码行为。它将为您节省大量时间,并且已经被一些最好的 Yii 程序员彻底检查过。