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

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

我最终是禁用了预加载而使用过滤器来加载bootstrapajax

禁用 bootstrap 预加载: /protect/config/main.phpbootstrap

'preload'=>array(
   //'bootstrap',
   'log'
),

建立文件: /protected/extensions/bootstrap/filters/BootstrapFilter.phpapp

<?php
class BootstrapFilter extends CFilter
{
    protected function preFilter()
    {
        Yii::app()->getComponent("bootstrap");
        return true;
    }
}

而后在控制器中,新增 bootstrap 过滤器yii

public function filters()
{
    return array(
        'accessControl',
        'postOnly + delete',
        array('ext.bootstrap.filters.BootstrapFilter - delete')
    );
}

这样将会在除了 "delete" 动做的其余动做中加载 bootstrap,若是你须要对其余指定的动做禁用加载 bootstrap,使用下面的代码:工具

array('ext.bootstrap.filters.BootstrapFilter - delete, uploadajax')

确保你在站点的全部控制器中添加此过滤器(包括显示错误信息的控制器)post

这个方法能够很容易的被添加到 Gii CRUD 生成器中,在我看来这是个更好的初始化此扩展的方法。code

相关文章
相关标签/搜索