Yii框架2.0的 验证码

最近看了一个Yii的教程视频,是按1.1的版本讲的,我想用Yii2.0的框架也参考他的学习开发下,结果发现好多不一样的,现在就说说验证码的事

首先加入一个actions 做验证码图片的显示,实际事调用了 CaptchaActive 类

public function actions() {
        return [
            'captcha' => [
                'class' => 'yiicaptchaCaptchaAction',
                'height' => 25,
                'width' => 80,
                'minLength' => 4,
                'maxLength' => 4,
            ],
        ];
    }

在模板文件里参考下面的使用,具体还是多看看文档

<?php echo Captcha::widget(['name'=>'captchaimg','captchaAction'=>'login/captcha','options'=>['style'=>'cursor:pointer;','id'=>'captchaimg'],'template'=>'{image}']); ?>

其中 'captchaAction'=>'login/captcha' 是需要注意的,他默认的是 site/captcha 但是如果在某个模块下做的,它会自动加上模块前缀,比如我的 admin ,刚开始的时候一直不能显示,后来发现是rote的问题,不过不知道在哪里改,看文档看了好久。

最后是验证,

这个在model类的 rules方法里,  ['captcha', 'captcha', 'message'=>'验证码错误', 'captchaAction'=>'admin/login/captcha'],

其中 'captchaAction'=>'admin/login/captcha' 也是需要设置的,默认的是 site/captcha  而且这里要绝对路径的全部,它不会自动加上模块id部分。

最后就是验证了。

$model->attributes = $_POST['LoginForm'];
$model->validate());

当然还可以获取验证结果的错误信息。

在模板里加入 

<?php echo Html::error($model, 'captcha'); ?>

OK,更细节的东西继续摸索,和1.1版本的不一样的地方挺多的。不过又似曾相识。主要是文档是英文的,稍微造成了点障碍。

原文地址:https://www.cnblogs.com/wayne173/p/4451409.html