1.不能随网页刷新而刷新的错误解决办法:
修改源代码 vendor/yiisoft/yii2/captcha/CaptchaValidator.php
/**
* @inheritdoc
*/
public function clientValidateAttribute($object, $attribute, $view)
{
$captcha = $this->createCaptchaAction();
$code = $captcha->getVerifyCode(true);
$hash = $captcha->generateValidationHash($this->caseSensitive ? $code : strtolower($code));
$options = [
'hash' => $hash,
'hashKey' => 'yiiCaptcha/' . $captcha->getUniqueId(),
'caseSensitive' => $this->caseSensitive,
'message' => Yii::$app->getI18n()->format($this->message, [
'attribute' => $object->getAttributeLabel($attribute),
], Yii::$app->language),
];
if ($this->skipOnEmpty) {
$options['skipOnEmpty'] = 1;
}
ValidationAsset::register($view);
return 'yii.validation.captcha(value, messages, ' . json_encode($options, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . ');';
}
}
$code = $captcha->getVerifyCode(false); false改成true
另外出现
解决方法:
在 model中修改captchaAction的值
['verifyCode', 'captcha','message' =>'验证码错误','captchaAction'=>'login/captcha'],
在view中:
<?= $form->field($loginForm, 'verifyCode',['options'=>['class' => 'form-group']])->widget(Captcha::className(),[
'captchaAction' => '/login/captcha',
'imageOptions' => ['alt'=>'点击换图','title'=>'点击换图','style'=>'cursor:pointer'],
'options' => [
'placeholder' => '验证码',
'class' => 'form-control',
'style' => 'margin-top:10px;'
]
])->label(false); ?>