總共分為三個(gè)方面:控制器配置、模型rules配置和視圖配置。
第一步:控制器配置
將下列代碼配置在actions中,請(qǐng)求驗(yàn)證碼鏈接對(duì)應(yīng)為 “控制器/captcha”。
'captcha'?=>?[ ?????????'class'?=>?'YIIcaptchaCaptchaAction', ????//?????'backColor'=>0x000000,//背景顏色 ?????????'maxLength'?=>?4,?//最大顯示個(gè)數(shù) ?????????'minLength'?=>?4,//最少顯示個(gè)數(shù) ?????????'padding'?=>?5,//間距 ?????????'height'=>45,//高度 ?????????'width'?=>?75,??//寬度 ??????//???'foreColor'=>0xffffff,?????//字體顏色 ?????????'offset'=>4, ?],
第二步:模型rules配置,即驗(yàn)證配置。
首先聲明公共變量?
public?$verifyCode
其次在rules方法中配置驗(yàn)證
['verifyCode',?'captcha','captchaAction'=>'user/captcha','on'?=>?['login']]
在這條配置中的”captchaAction”加入了配置,即控制器的路由,如果不進(jìn)行配置的話會(huì)走site/captcha的路由,這是框架樣例的路由。
第三步:視圖中的配置
在ActiveForm中加入如下代碼:
=?$form->field($model,'verifyCode')->widget( ????Captcha::className(), ????[ ????'template'?=>?'{image}{input}', ????'captchaAction'=>'user/captcha',?//?此注意要使用自己配置的那個(gè)控制器驗(yàn)證碼路由 ????'imageOptions'=>[?'style'=>'cursor:pointer;width:77px'] ????] ????)
最后有一個(gè)巨坑的問題:由于編碼過程中使用了一些windows下的換行符或者空格,導(dǎo)致了未知的輸出,會(huì)導(dǎo)致驗(yàn)證碼圖片不能夠正常的生成。
這是需要在CaptchaAction類中的renderImageByGD方法中加入如下代碼:
imagecolordeallocate($image,?$foreColor); ? ob_clean();?//?此行為插入代碼,目的是清空緩存區(qū)為輸出圖片提供干凈空間。 ob_start(); imagepng($image); imagedestroy($image);
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END