首頁 >php框架 >YII >yii2驗證碼樣式如何設定

yii2驗證碼樣式如何設定

angryTom
angryTom原創
2020-02-17 17:57:082827瀏覽

yii2驗證碼樣式如何設定

yii2驗證碼樣式如何設定

#第一步,控制器:

##在任何controller裡面重寫方法

public function actions()
{        return [
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            'backColor' => 0x000000,//背景颜色
            'maxLength' => 6, //最大显示个数
            'minLength' => 5,//最少显示个数
            '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'],
          ];
    }
}
驗證規則裡面驗證碼的驗證器是

captcha

第三步,視圖:

用ActiveForm產生對應欄位。

captchaAction

參數指定第一步是寫在哪裡的,預設是site裡面。 <pre class="brush:php;toolbar:false;"> &lt;?= $form-&gt;field($model, &amp;#39;verifyCode&amp;#39;)-&gt;widget(Captcha::className(), [ &amp;#39;template&amp;#39; =&gt; &amp;#39;&lt;div class=&quot;row&quot;&gt;&lt;div class=&quot;col-lg-3&quot;&gt;{image}&lt;/div&gt;&lt;div class=&quot;col-lg-6&quot;&gt;{input}&lt;/div&gt;&lt;/div&gt;&amp;#39;, ]) ?&gt;</pre> 驗證碼,產生和驗證的整個流程就完成了。 

以上是產生驗證碼的流程,因為驗證碼數字是在程式碼中寫死的,如果我們需要數字的話,那該怎麼辦呢?

很好辦,我們可以自己寫個類別來繼承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 = &#39;1234567890123456789012&#39;;
        $vowels = &#39;aeiou&#39;;
        $code = &#39;&#39;;
        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;
    }
}

產生類別檔案成功。

然後再更改控制器的配置

&#39;captcha&#39; => [
    &#39;class&#39; => &#39;yii\captcha\Newcaptcha&#39;,
    &#39;maxLength&#39; => 5,
    &#39;minLength&#39; =>5
],

好了,更改完成,讓我們來看效果吧!


更多yii框架知識,可以觀看相關

程式學習課程

,! !

以上是yii2驗證碼樣式如何設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn