Php 检查Yii框架中的验证规则

Php 检查Yii框架中的验证规则,php,yii,yii-events,Php,Yii,Yii Events,我是Yii框架的新手,所以我试图了解它的工作方式。 对于用户创建表单,我有以下验证规则,现在我需要的是签入afterValidation()方法,如果所有验证规则都传递了用户密码的哈希值。我不知道的是,如果验证规则通过与否,Yii是否有一个返回true或false的内置方法 public function rules() { // NOTE: you should only define rules for those attributes that /

我是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->validate()之后调用您的
afterValidate()
因为我认为如果执行了验证,并且您最终得到了一个无限循环,那么会自动调用它

您应该使用的方法是因为表单验证已经执行了。嵌套错误的可能原因是它在每次
$this->validate()
之后调用您的
afterValidate()
,因为我认为如果执行了验证,就会自动调用它,而如果在
afterValidate()
中放入任何内容,您只会得到一个无限循环,它在验证周期中运行,我想您应该在保存()之前将代码放入

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


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

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

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


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

你查过文件了吗?还是谷歌?这真的很容易找到。如果我在这里问我的问题,这意味着我已经检查了文档,不仅我还检查了谷歌!SmartAss因为
$model->validate()
很难找到,一点努力可以走很长的路。我已经尝试了一些技巧,但是当我调用该函数时,我得到了以下错误:致命错误:达到了最大函数嵌套级别“100”,正在中止!在第559行的C:\php\Yii\framework\web\auth\CWebUser.php中,可能我没有正确使用$model->validate(),您检查过文档了吗?还是谷歌?这真的很容易找到。如果我在这里问我的问题,这意味着我已经检查了文档,不仅我还检查了谷歌!SmartAss因为
$model->validate()
很难找到,一点努力可以走很长的路。我已经尝试了一些技巧,但是当我调用该函数时,我得到了以下错误:致命错误:达到了最大函数嵌套级别“100”,正在中止!在第559行的C:\php\Yii\framework\web\auth\CWebUser.php中,可能我没有正确使用$model->validate(),知道吗