我有一个标准模型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
?