我有一个标准模型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
?
答案 0 :(得分:0)
“public $ useCaptcha = true”是一个变量类,你需要为它设置一个验证器!
EG。添加此规则:
array('useCaptcha', 'safe', 'on'=>''),
之后,您将能够更改“$ this-> useCpatcha”值。