ony 2015-07-03 09:24:20 18288次浏览 8条评论 14 4 0

Yii2.0的自带的验证依赖于GD2或者ImageMagick扩展。

使用步骤如下:

重写yii\web\Controller::actions()方法,用ID"captcha"注册一个CaptchaAction类的action。

在表单模型里面添加一个属性,用来保存用户输入的验证码字符串;这个属性的验证器是"captcha"。

在视图里面,把yii\captcha\Captcha Widget插入到表单里面。

第一步,控制器:

在任意controller里面重写方法

/**
 * @inheritdoc
*/
public function actions()
{
    return [
         'captcha' => [
              'class' => 'yii\captcha\CaptchaAction',
              'maxLength' => 5,
              'minLength' => 5
         ],
     ];
}

第二步,表单模型:

假如是一个登陆表单。

这里只给出验证码相关的部分。

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

验证规则里面验证码的验证器是captcha。

第三步,视图:

用ActiveForm生成对应字段。

<?= $form->field($model, 'verifyCode', [
        'options' => ['class' => 'form-group form-group-lg'],
])->widget(Captcha::className(),[
       'template' => "{image}",
       'imageOptions' => ['alt' => '验证码'],
]); ?>

验证码,生成和验证的整个流程就完成了。

效果图

觉得很赞
  • 评论于 2015-07-14 16:26 举报

    不错,简单明了

    1 条回复
    评论于 2015-08-13 18:02 回复

    哪简单 明了? 我怎么看不懂啊

    觉得很赞
  • 评论于 2015-08-13 18:08 举报

    大标题

    echo 123;
    是斜体的吗

  • 评论于 2015-10-17 22:55 举报

    <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [

                        'template' => '<div class="row"><div class="col-lg-2">{image}</div>
                        <div class="col-lg-2">{input}</div></div>',
                    ]) ?>
    
  • 评论于 2016-03-16 09:48 举报

    不错,简单明了,很适合新人上手

    觉得很赞
  • 评论于 2016-08-13 09:52 举报

    很好! 值得表扬,很适合新手

  • 评论于 2016-09-11 16:45 举报

    actions就没有用啊?

    1 条回复
    评论于 2016-12-19 11:13 回复

    他这个例子确实没有用到把,用得是默认的public $captchaAction = 'site/captcha'; 用的是site下的配置,如果传进去这个参数,是有用到的。

  • 评论于 2017-12-21 15:57 举报

    想问下怎么我的验证码的长度在控制器的actions方法里面改变minLength和maxLength都修改不了呢?

  • 评论于 2018-09-21 10:46 举报

    写的什么玩意,误人子弟

您需要登录后才可以评论。登录 | 立即注册