0

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

2 回答 2

2

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

于 2013-02-03T01:42:55.920 回答
1

相反,如果afterValidate()在验证周期中运行任何东西,我想你想把你的代码放在beforeSave().

beforeSave()只有在您的验证规则运行并且没有错误时才会运行。

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

于 2013-02-03T02:45:11.503 回答