如何在指定的动作中加载 Yii-bootstrap 扩展

YII cooljun 317℃ 0评论

我在使用 Yii-Bootstrap extension 时遇到了个大问题,由于预加载机制使所有的 AJAX 请求都会初始化 bootstrap。这是资源的极大浪费,尤其是使用基于 AJAX 的文件上传工具拆分大文件上传时,会初始化 bootstrap 上百次。

我最终是禁用了预加载而使用过滤器来加载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 生成器中,在我看来这是个更好的初始化此扩展的方法。

本文翻译自外文网站,查看原文请点击:http://www.yiiframework.com/wiki/434/load-the-yii-bootstrap-extension-on-specific-actions/

转载请注明:cooljun小站 » 如何在指定的动作中加载 Yii-bootstrap 扩展

如果你觉得这篇文章对你有帮助,请支持我继续更新网站 !捐赠本站
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址