B5net

人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

Yii2手动刷新和验证自带验证码

Published on:2022-04-25
当不使用ActiveForm生成表单时,如果我们使用自带的验证码,需要动进行刷新或验证时的操作。


1.手动刷新,需要创建一个Actions继承原来的\yii\captcha\CaptchaAction,并重写其run方法

class CaptchaAction extends \yii\captcha\CaptchaAction
{
    public function run()
    {
        $this->setHttpHeaders();
        \Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
        return $this->renderImage($this->getVerifyCode(true));
    }
}

2.控制器中使用
public function actions()
    {
        return [
            'captcha' => [
                'class' => 'common\actions\CaptchaAction',
                'width' => 130,
                'height' => 48,
                'maxLength' => 5,
                'minLength' => 4,
                'offset'=>4
            ],
        ];
    }
3.前端页面,如下就可以实现刷新
<img onclick="changeCaptcha()" src="" width="130px" height="34px" class="login-captcha" alt="点击刷新验证码" id="captcha_img"/>
function changeCaptcha(){
      var url = urlcreate("<?=\yii\helpers\Url::toRoute(['captcha'])?>","_t="+Math.random());
      $("#captcha_img").attr('src',url)
}

4.使用自定义model验证,captchaAction 需要是生成验证码的控制器/方法
class LoginForm extends Model
{
    public $username;
    public $password;
    public $captcha;
    public function rules()
    {
        return [
            [['username', 'password','captcha'], 'required'],
            ['captcha', 'captcha','captchaAction' => 'public/captcha'],
            ['password', 'validatePassword'],
            ['remember', 'safe'],
        ];
    }

5.手动验证码
控制器中使用
 $this->createAction('captcha')->validate($verify_code,false);

留言列表(0)

    留言

    B5net

    人生是场无尽旅途,欢声笑语,踟蹰彷徨,走过的是岁月,路过的是迷茫。向前,是希望极光;回首,是悠长深巷。

    开源项目
    最新评论
    小白 :大佬您好 请问一下 http://b5laravelcmf.b5net.com/admin这个演示网址的全部代码有吗,gitee上不全呢,还能提供一下吗,感激不尽阿
    tz :大佬 B5YiiCMF 还开放吗
    weifox on GoLang常用的三方库 :还有 https://github.com/golang-module/carbon
    php :关于导出功能:1、B5thinkCMF部署后 参数的导出功能点击后就白屏了,不知道是哪里有问题?2、人员部门的导出功能没看懂怎么配置的? 只是启用exportshow=true吗 方便的话请答复下,谢谢!
    初学者 :您好! 部署了您的B5ThinkCMF,请教下 使用新增功能如何实现二级联动呢 ?谢谢
    11 :22
    pcy :前排围观
    Louis :冰舞的博客使用yii框架做的吧,B5ThinkCMF在本地部署后,登录系统的响应时间要比B5YiiCMF的登录时间长,还有一些Bug待修复
    34 :感谢你的开源项目
    文章分类