Числовая капча в Yii2



По умолчанию, Yii2 использует буквы английского алфавита. Капча при этом выглядит вот так:
yii2-captcha

Заменим, её на числовую капчу вида:
yii2 numeric captcha

Для этого расширим класс CaptchaAction и переопределим метод generateVerifyCode(). Именно, этот метод отвечает за то, из каких символов будет состоять капча в Yii2.

Создадим файл NumericCaptcha.php в app\common. Код файла будет следующим:

<?php

namespace app\common;

use yii\captcha\CaptchaAction as DefaultCaptchaAction;

class NumericCaptcha extends DefaultCaptchaAction
{
    protected function generateVerifyCode()
    {
        //Длина
        $length = 5;

        //Цифры, которые используются при генерации
        $digits = '0123456789';

        $code = '';
        for($i = 0; $i < $length; $i++) {
            $code .= $digits[mt_rand(0, 9)];
        }
        return $code;
    }
}

Теперь, нужно прописать пусть до новой капчи в контроллере:

public function actions()
    {
        return [
            'captcha' => [
                //'class' => 'yii\captcha\CaptchaAction',
                'class' => 'app\common\NumericCaptcha',
            ],
        ];
    }

Теперь, при генерации должны использоваться цифры.



Теги:

Оставить комментарий