如何在指定的动作中加载 Yii-bootstrap 扩展
2012-12-17 11:48
309 查看
我在使用 Yii-Bootstrap extension 时遇到了个大问题,由于预加载机制使所有的 AJAX 请求都会初始化 bootstrap。这是资源的极大浪费,尤其是使用基于 AJAX 的文件上传工具拆分大文件上传时,会初始化 bootstrap 上百次。
我最终是禁用了预加载而使用过滤器来加载bootstrap
禁用 bootstrap 预加载: /protect/config/main.php
创建文件: /protected/extensions/bootstrap/filters/BootstrapFilter.php
然后在控制器中,新增 bootstrap 过滤器
这样将会在除了 “delete” 动作的其他动作中加载 bootstrap,如果你需要对其他指定的动作禁用加载 bootstrap,使用下面的代码:
确保你在站点的所有控制器中添加此过滤器(包括显示错误信息的控制器)
这个方法可以很容易的被添加到 Gii CRUD 生成器中,在我看来这是个更好的初始化此扩展的方法。
我最终是禁用了预加载而使用过滤器来加载bootstrap
禁用 bootstrap 预加载: /protect/config/main.php
'preload'=>array( //'bootstrap', 'log' ),
创建文件: /protected/extensions/bootstrap/filters/BootstrapFilter.php
<?php class BootstrapFilter extends CFilter { protected function preFilter() { Yii::app()->getComponent("bootstrap"); return true; } }
然后在控制器中,新增 bootstrap 过滤器
public function filters() { return array( 'accessControl', 'postOnly + delete', array('ext.bootstrap.filters.BootstrapFilter - delete') ); }
这样将会在除了 “delete” 动作的其他动作中加载 bootstrap,如果你需要对其他指定的动作禁用加载 bootstrap,使用下面的代码:
array('ext.bootstrap.filters.BootstrapFilter - delete, uploadajax')
确保你在站点的所有控制器中添加此过滤器(包括显示错误信息的控制器)
这个方法可以很容易的被添加到 Gii CRUD 生成器中,在我看来这是个更好的初始化此扩展的方法。
相关文章推荐
- 如何在指定的动作中加载 Yii-bootstrap 扩展
- 如何在weblogic启动时让其加载指定的jar库文件
- <probing> 元素指定扩展Asp.Net加载程序集位置
- 扩展bootstrap的popover, 增加在指定时间内fadeOut的功能
- Selenium-webdriver系列教程(12)————如何在启动firefox时加载扩展
- selenium-webdriver——如何在启动firefox时加载扩展
- 自定义Bootstrap-Table扩展——分页跳转到指定页码
- yii_1_1_17_12(上传类与如何扩展第三方类与缩略图类的使用-2016-2-12)
- 如何删除Struts2动作的后缀扩展名
- 如何使用java代码加载指定包下面的所有类
- 如何写.gitignore只包含指定的文件扩展名
- Yii中单独为module加载Bootstrap或…
- 如何:指定符号位置和加载行为
- YII中如何按指定条件显示actionadmin的内容
- Yii 中使用 yii-bootstrap 扩展
- Yii --EClientScript 扩展,css,js文件代码压缩合并加载
- 插件开发或RCP中如何通过actions扩展点配置工具栏按钮(插入到指定的ToolBarManger中)
- Bootstrap 模态对话框 remote指定内容加载
- Yii中单独为module加载Bootstrap或其他组件的4种方法
- 如何在weblogic启动时让其加载指定的jar库文件