Heim  >  Artikel  >  PHP-Framework  >  So legen Sie den Stil des yii2-Bestätigungscodes fest

So legen Sie den Stil des yii2-Bestätigungscodes fest

angryTom
angryTomOriginal
2020-02-17 17:57:082805Durchsuche

So legen Sie den Stil des yii2-Bestätigungscodes fest

So legen Sie den yii2-Bestätigungscode-Stil fest

Der erste Schritt, Controller:

in Schreiben Sie die Methode

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,        //设置字符偏移量 有效果
        ],       ]; 
}

in einem beliebigen Controller um. Der zweite Schritt ist das Formularmodell:

Hier wird nur der Teil angegeben, der sich auf den Bestätigungscode bezieht.

Empfohlene verwandte Artikel und Tutorials: yii-Tutorial

class ContactForm extends Model{    
    public $verifyCode;    
    public function rules(){        
            return [
                ['verifyCode', 'required'],
                ['verifyCode', 'captcha'],
          ];
    }
}

Der Validator des Verifizierungscodes in der Verifizierungsregel ist captcha.

Der dritte Schritt, Ansicht:

Verwenden Sie ActiveForm, um die entsprechenden Felder zu generieren.

captchaActionDer Parameter gibt an, wo der erste Schritt geschrieben wird. Die Standardeinstellung ist 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;,
 ]) ?>

Verifizierungscode, der gesamte Prozess der Generierung und Verifizierung ist abgeschlossen.

Das Obige ist der Prozess der Generierung eines Verifizierungscodes, da die Verifizierungscodenummern im Code fest codiert sind. Was sollen wir tun, wenn wir Nummern benötigen?

Das geht ganz einfach. Wir können selbst eine Klasse schreiben, um CaptchaAction zu erben und die Methode „generateVerifyCode“ zu überschreiben:

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;
    }
}

Die Klassendatei wurde erfolgreich generiert.
Dann ändern Sie die Controller-Konfiguration

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

Okay, die Änderung ist abgeschlossen, schauen wir uns den Effekt an!

Mehr für Weitere Informationen zum Yii-Framework finden Sie in den entsprechenden Lernkursen zum Programmieren! !

Das obige ist der detaillierte Inhalt vonSo legen Sie den Stil des yii2-Bestätigungscodes fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn