yii2-lock-form 也许这就是你想要的

PHP · light · 于 7年前 发布 · 9843 次阅读

是不是被用户的行为所困扰?

一个表单用户点击提交按钮了N次,这也导致了数据提交了N次。

为了此受到了测试的欺辱,受到了老板的批评?

不用怕,它就是来拯救你的。

第一步:打开命令行,敲入 composer require light\yii2-lock-form=~1.0.0

第二步:上个厕所

第三步:如果你的项目中已经使用了 yii2-bootstrap, 那么好,只需要在的你的 AppAsset 「whatever, 只要你全局依赖的就成」

轻轻的敲入:


'depends' => [
    //other depends
    'light\widgets\LockBsFormAsset'
]

如果你没使用 yii2-bootstrap 也能满足您:你只需要将 light\widgets\LockBsFormAsset 替换成 light\widgets\LockFormAsset.

还需要做什么?

如果还需要做的话,那就是定制一下 Lock 用语,


Html::submitButton('提交', ['data-loading-text' => '正在提交数据, 不让你点,哼'])

说了这么多,东西在那儿?

https://github.com/lichunqiang/yii2-lock-form

重要的事情要说三遍:star,star, star, little star, 一闪一闪亮晶晶。

本帖已被设为精华帖!
共收到 6 条回复 插件
echo#17年前 2 个赞

GetYii 目前的做法是简单粗暴的做法,在全局 js 中添加下面 js:

// 防止重复提交
$('form').on('beforeValidate', function (e) {
    $(':submit').attr('disabled', true).addClass('disabled');
});
$('form').on('afterValidate', function (e) {
    if (cheched = $(this).data('yiiActiveForm').validated == false) {
        $(':submit').removeAttr('disabled').removeClass('disabled');
    }
});
$('form').on('beforeSubmit', function (e) {
    $(':submit').attr('disabled', true).addClass('disabled');
});
kali0102#25年前 1 个赞

有没有效果查看下!

3楼 已删除.
4楼 已删除.
kali0102#55年前 0 个赞

测试了下这个插件好像还是有重复插入到数据库的情况!js端限制不了

zoofei#65年前 0 个赞

然并卵,没什么用,反应太慢,如果恶意快速点击,很容易绕过。。。。。。

hrxf168#74年前 0 个赞

数据库那边设一个主键,模型这里做一个唯一性验证unique,又怎么会出现重复提交呢?

8楼 已删除.
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册