По умолчанию, Yii2 использует буквы английского алфавита. Капча при этом выглядит вот так:
Заменим, её на числовую капчу вида:
Для этого расширим класс 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', ], ]; }
Теперь, при генерации должны использоваться цифры.
Теги: Yii2