如何在指定的動做中加載 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

相關文章
相關標籤/搜索