最近看了一个Yii的教程视频,是按1.1的版本讲的,我想用Yii2.0的框架也参考他的学习开发下,结果发现好多不一样的,现在就说说验证码的事
首先加入一个actions 做验证码图片的显示,实际事调用了 CaptchaActive 类
public function actions() { return [ 'captcha' => [ 'class' => 'yii\captcha\CaptchaAction', '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版本的不一样的地方挺多的。不过又似曾相识。主要是文档是英文的,稍微造成了点障碍。