yii2 検証コード スタイルの設定方法
最初のステップ、コントローラー:
任意のコントローラーのメソッドを書き換える
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, //设置字符偏移量 有效果 ], ]; }
2 番目のステップ、フォーム モデル:
ここでは、検証コードの関連部分のみを示します。
おすすめの関連記事チュートリアル: yii チュートリアル
class ContactForm extends Model{ public $verifyCode; public function rules(){ return [ ['verifyCode', 'required'], ['verifyCode', 'captcha'], ]; } }
検証ルール内の検証コードの検証者は captcha
です。
3 番目のステップ、表示:
ActiveForm を使用して、対応するフィールドを生成します。
captchaAction
パラメータは、最初のステップが書き込まれる場所を指定します。デフォルトは site
内です。
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', ]) ?>
検証コードの生成と検証の全プロセスが完了しました。
上記は検証コードを生成するプロセスですが、検証コード番号はコード内にハードコーディングされているため、番号が必要な場合はどうすればよいでしょうか?
これは簡単です。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 = '1234567890123456789012'; $vowels = 'aeiou'; $code = ''; 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; } }
クラス ファイルは正常に生成されます。
次に、コントローラーの設定を変更します
'captcha' => [ 'class' => 'yii\captcha\Newcaptcha', 'maxLength' => 5, 'minLength' =>5 ],
さて、変更は完了しました。効果を見てみましょう!
詳細 Yii フレームワークについてさらに詳しく知りたい場合は、関連する プログラミング学習コース をご覧ください。 !
以上がyii2 検証コードのスタイルを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。