Yii2使用Bootbox插件实现自定义弹窗


Posted in Javascript onApril 02, 2015

本次尝试了一个新的小插件"bootbox"。

Yii2中使用了Bootstarp,让界面更美观,可是美中不足的是,在Gridview表格的Action里,删除功能的弹窗实在有点与Bootstrap违和,网上找到了一种解决方案,分享下使用此插件的过程。

Bootbox.js,是一个小型的JavaScript库用来创建简单的可编程对话框,基于Bootstrap的Modal(模态框)来创建。

官方说明

http://bootboxjs.com/v3.x/index.html

Bootbox.js下载

我们可以在GitHub上找到开源的bootbox.js下载

https://github.com/makeusabrew/bootbox

如何使用此插件?

结合Yii2的GridView,我们来自定义Bootbox样式的弹窗:

一、覆盖yii.js模块

Yii2自带的yii.js中定义了生成confirm对话框,以及执行action操作。

我们可以用过覆盖js方法来达到目的。

在@app/web/js/路径下创建一个javascript文件,比如main.js。

代码如下:

yii.allowAction = function ($e) {
  var message = $e.data('confirm');
  return message === undefined || yii.confirm(message, $e);
};
// --- Delete action (bootbox) ---
yii.confirm = function (message, ok, cancel) {

  bootbox.confirm(
    {
      message: message,
      buttons: {
        confirm: {
          label: "OK"
        },
        cancel: {
          label: "Cancel"
        }
      },
      callback: function (confirmed) {
        if (confirmed) {
          !ok || ok();
        } else {
          !cancel || cancel();
        }
      }
    }
  );
  // confirm will always return false on the first call
  // to cancel click handler
  return false;
}

二、注册你的资源包

需要注册bootbox.js和main.js文件。

修改文件:@app/assets/Assets.php

代码如下:

namespace backend\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web';
  public $css = ['css/site.css'];
  // 注册js资源
  public $js = ['js/bootbox.js', 'js/main.js'];
  public $depends = [
    'yii\web\YiiAsset',
    'yii\bootstrap\BootstrapAsset',
  ];
}

三、自定义Modal框

了解下bootbox.js源码,可以知道bootbox.js使用的是bootstarp的modal框,我们可以根据需求

修改bootbox.js源码中的"templates"变量,自定义Modal样式。

看下对比结果:

修改前:

Yii2使用Bootbox插件实现自定义弹窗

修改后:

Yii2使用Bootbox插件实现自定义弹窗

瞬间舒服多了,弹窗功能变的不再那么违和。类似这样的弹窗插件有很多,我想可以用同样的方法来实现使用其他的插件。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
js Dialog 实践分享
Oct 22 Javascript
解析javascript 数组以及json元素的添加删除
Jun 26 Javascript
JQuery仿小米手机抢购页面倒计时效果
Dec 16 Javascript
18个非常棒的jQuery代码片段
Nov 02 Javascript
javascript实现tab切换的两个实例
Nov 05 Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
vue.js的提示组件
Mar 02 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
vue-awesome-swiper滑块插件使用方法详解
Nov 27 Javascript
JS实现动态生成html table表格的方法分析
Jul 11 Javascript
如何实现小程序与小程序之间的跳转
Nov 04 Javascript
jquery制作多功能轮播图插件
Apr 02 #Javascript
Javascript中3个需要注意的运算符
Apr 02 #Javascript
原生JS实现响应式瀑布流布局
Apr 02 #Javascript
Javascript变量的作用域和作用域链详解
Apr 02 #Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 #Javascript
JavaScript中操作Mysql数据库实例
Apr 02 #Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
Apr 02 #Javascript
You might like
跟我学Laravel之路由
2014/10/15 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python3处理文件中每个词的方法
2015/05/22 Python
python中__call__内置函数用法实例
2015/06/04 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Python hashlib模块用法实例分析
2018/06/12 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
Python语法分析之字符串格式化
2019/06/13 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
员工工作能力评语
2014/12/31 职场文书
工地食品安全责任书
2015/05/09 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL