Делаем цифровую капчу в Yii2
Из коробки в Yii2 используется капча из букв английского алфавита. Выглядит она вот так:

Но, вместо этого мы будем использовать цифровую капчу, которая безусловно будет удобней для ваших пользователей. Выглядеть она будет так:

Для этого переопределим метод generateVerifyCode()
класса CaptchaAction
. Именно этот метод отвечает за то, из каких символов будет состоять капча в Yii2.
Я использую Yii2 advanced application (расширенный шаблон приложения)
Создадим файл NumericCaptcha.php
в frontend\components
. Код файла будет следующим:
<?php namespace frontend\components; 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; } }
Теперь, нужно прописать пусть до новой капчи в контроллере:
<?php namespace frontend\controllers; use yii\web\Controller; use frontend\components\NumericCaptcha; class SiteController extends Controller { public function actions() { return [ 'captcha' => [ 'class' => NumericCaptcha::className(), 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, ], ]; } }
Теперь, при генерации будут использоваться цифры.