Rumah  >  Artikel  >  rangka kerja php  >  yii2验证码样式如何设置

yii2验证码样式如何设置

angryTom
angryTomasal
2020-02-17 17:57:082685semak imbas

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里面。

 <?= $form->field($model, &#39;verifyCode&#39;)->widget(Captcha::className(), [
    &#39;template&#39; => &#39;<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>&#39;,
 ]) ?>

 验证码,生成和验证的整个流程就完成了。 

以上是生成验证码的流程,因为验证码数字是在代码中写死的,如果我们需要数字的话,那该怎么办呢?

很好办,我们可以自己写个类来继承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框架知识,可以观看相关编程学习课程,!!

Atas ialah kandungan terperinci yii2验证码样式如何设置. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:yii框架怎么设置伪静态Artikel seterusnya:yii2.0判断ios还是安卓