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)
加载更多
留言
开源项目
- B5LaravelCMF:基于laravel9+bootstrap3实现的快速开发后台
- B5YiiCMF:基于Yii2+bootstrap3 实现的快速开发后台管理系统
- B5ThinkCmf:基于ThinkPHP6+bootstrap3 实现的快速开发后台管理系统
- B5GoCmf:gin + sqlx +bootstrap 实现后端管理系统
- See also:gitee.com@b5net
最新评论
wpstqe
:作者大大有没有建一个QQ群的计划?
流浪的PHPer
:感谢开源项目,快速开发非常的好用!
小白
:大佬您好 请问一下 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待修复
文章分类
标签