最近玩了下Yii2
的驗(yàn)證碼部分,正常的邏輯都可以走通的,網(wǎng)上的例子也是沒(méi)有問(wèn)題的,關(guān)鍵有問(wèn)題的部分是在
module
中使用的時(shí)候,分享給大家,希望對(duì)大家
學(xué)習(xí)yii2有所幫助。
controller
部分的代碼,這里的跟網(wǎng)上的都類似
public function actions(){
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => null,
'backColor' => 0x000000, //
背景顏色
'maxLength' => 6, //
最大顯示個(gè)數(shù)
'minLength' => 5, //
最少顯示個(gè)數(shù)
'padding' => 5, //
間距
'height' => 40, //
高度
'width' => 130, //
寬度
'foreColor' => 0xffffff, //
字體顏色
'offset' => 4, //
設(shè)置字符偏移量 有效果
],
];
}
model
部分的代碼【這里是需要注意的】
public function rules(){
return [
['username', 'required', 'message' => '
登錄賬號(hào)不能為空
'],
['password', 'required', 'message' => '
登錄密碼不能為空
'],
['verifyCode', 'required', 'message' => '
驗(yàn)證碼不能為空
'],
['verifyCode', 'captcha', 'captchaAction' => 'admin/default/captcha', 'message' => '
驗(yàn)證碼輸入錯(cuò)誤
'],
['rememberMe', 'boolean'],
['password', 'validatePassword'],
];
}
rules
中的
verifyCode,
需要加一個(gè)
captchaAction
對(duì)應(yīng)的值,不然會(huì)出現(xiàn)驗(yàn)證碼驗(yàn)證不通過(guò),而且驗(yàn)證碼的的數(shù)字也不會(huì)變化,原因應(yīng)該是默認(rèn)使用了
site/captcha
導(dǎo)致的
view
部分的代碼【由于
php
跟
html
的混排導(dǎo)致我無(wú)法忍受頁(yè)面樣式的混亂排版,所以盡量將參數(shù)配置部分拿出來(lái)】
$captchaConfig = [
'name' => 'captchaimg',
'captchaAction' => ['/admin/default/captcha'],
'template' => '<div class="form-group"><div>{image}</div></div>',
'imageOptions' => [
'id' => 'captchaimg',
'title' => '
換一個(gè)
',
'alt' => '
換一個(gè)
',
'style' => 'cursor:pointer;margin-left:25px;',
],
];
<?=Captcha::widget($captchaConfig);?>
來(lái)源:GoWhich