0

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

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

4

1 回答 1

0

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

例如。添加此规则:

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

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

于 2013-11-13T14:40:10.847 回答