Yii - 规则allowEmpty用于模型

时间:2013-11-11 14:38:10

标签: php validation yii

我有一个标准模型LoginForm,它使用CAPTCHA登录。无论如何在某些页面我需要登录而不使用验证码。为此,我添加了public $useCaptcha = true;。当它是false时,CAPTCHA不需要。我还添加了一条规则:

array('verifyCode', 'captcha', 'allowEmpty'=>!Yii::app()->user->isGuest || !CCaptcha::checkRequirements() || !$this->useCaptcha)

但我的规则不起作用。它的回归总是错误的。作为解决方案,我使用beforeValidation函数:

protected function beforeValidate()
{
    if(!$this->useCaptcha)
    {
        $this->getValidators()[4]->allowEmpty = true;
    }
    return true;
}

但这不是一个好的决定。为什么allowEmpty规则会返回false

1 个答案:

答案 0 :(得分:0)

“public $ useCaptcha = true”是一个变量类,你需要为它设置一个验证器!

EG。添加此规则:

array('useCaptcha', 'safe', 'on'=>''),

之后,您将能够更改“$ this-> useCpatcha”值。