检查Yii框架中的验证规则

时间:2013-02-02 21:36:34

标签: php yii yii-events

我是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);
        }

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

相反,如果在afterValidate()中放置任何在验证周期中运行的内容,我认为您希望将代码放在beforeSave()中。

只有在您的验证规则运行且没有错误时才会运行

beforeSave()

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