這篇文章主要介紹yii2驗證碼樣式的設置方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)是專業(yè)的和政網(wǎng)站建設公司,和政接單;提供網(wǎng)站設計制作、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行和政網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!yii2驗證碼樣式如何設置
第一步,控制器:
在任意controller里面重寫方法
public function actions() { return [ 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, 'backColor' => 0x000000,//背景顏色 'maxLength' => 6, //較大顯示個數(shù) 'minLength' => 5,//最少顯示個數(shù) 'padding' => 5,//間距 'height' => 40,//高度 'width' => 130, //寬度 'foreColor' => 0xffffff, //字體顏色 'offset' => 4, //設置字符偏移量 有效果 ], ]; }
第二步,表單模型:
這里只給出驗證碼相關的部分。
相關文章教程推薦:yii教程
class ContactForm extends Model{ public $verifyCode; public function rules(){ return [ ['verifyCode', 'required'], ['verifyCode', 'captcha'], ]; } }
驗證規(guī)則里面驗證碼的驗證器是captcha
。
第三步,視圖:
用ActiveForm生成對應字段。
captchaAction
參數(shù)指定第一步是在寫在哪里的,默認是site
里面。
= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'template' => '', ]) ?>{image}{input}
驗證碼,生成和驗證的整個流程就完成了。
以上是生成驗證碼的流程,因為驗證碼數(shù)字是在代碼中寫死的,如果我們需要數(shù)字的話,那該怎么辦呢?
很好辦,我們可以自己寫個類來繼承CaptchaAction,重寫generateVerifyCode方法,例子:
namespace yii\captcha; class Newcaptcha extends CaptchaAction { protected function generateVerifyCode() { if ($this->minLength > $this->maxLength) { $this->maxLength = $this->minLength; } if ($this->minLength < 3) { $this->minLength = 3; } if ($this->maxLength > 20) { $this->maxLength = 20; } $length = mt_rand($this->minLength, $this->maxLength); $letters = '1234567890123456789012'; $vowels = 'aeiou'; $code = ''; for ($i = 0; $i < $length; ++$i) { if ($i % 2 && mt_rand(0, 10) > 2 || !($i % 2) && mt_rand(0, 10) > 9) { $code .= $vowels[mt_rand(0, 4)]; } else { $code .= $letters[mt_rand(0, 20)]; } } return $code; } }
生成類文件成功。
然后再更改控制器的配置
'captcha' => [ 'class' => 'yii\captcha\Newcaptcha', 'maxLength' => 5, 'minLength' =>5 ],
以上是“yii2驗證碼樣式的設置方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!