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 相关文章推荐
JavaScript使用focus()设置焦点失败的解决方法
Sep 03 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
详解JavaScript的Polymer框架中的通知交互
Jul 29 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
使用bat打开多个cmd窗口执行gulp、node
Feb 17 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
Vue.set()实现数据动态响应的方法
Feb 07 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
vue实现图片懒加载的方法分析
Feb 05 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
php中取得文件的后缀名?
2012/02/20 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
php中数组最简单的使用方法
2020/12/27 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
js表格分页实现代码
2009/09/18 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
微信小程序云开发之使用云数据库
2019/05/17 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
如何使用Javascript中的this关键字
2020/05/28 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
Puppeteer使用示例详解
2019/06/20 Python
python调用其他文件函数或类的示例
2019/07/16 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Android笔试题总结
2014/11/29 面试题
linux比较文件内容的命令是什么
2015/09/23 面试题
机械制造专业个人的自我评价
2013/12/28 职场文书
儿童诗两首教学反思
2016/02/23 职场文书