Load the Yii-Bootstrap Extension on Specific Actions

A big problem I've hit with the Yii-Bootstrap extension is that all AJAX requests are initializing Bootstrap because of preload. This is a huge waste of resources, especially when using AJAX-based file uploaders that split the file into chunks. Large file uploads using that method could be initializing bootstrap hundreds of times.

I ended up disabling preload and switched the loading of bootstrap to a filter.

Disable bootstrap preload: /protect/config/main.php


Create file: /protected/extensions/bootstrap/filters/BootstrapFilter.php

class BootstrapFilter extends CFilter
    protected function preFilter()
        return true;

Then in a controller, add the new bootstrap filter:

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

This will load bootstrap for all actions in the controller, other than the "delete" action. By default the "delete" action does not render a view, which allows us to safely skip bootstrap loading on that action. If you wanted to disable loading bootstrap for another specific action, do the following:

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

Make sure you add this filter to all site controllers that require bootstrap (this includes the Site controller to display errors)

This functionality could easily be added to the bootstrap Gii CRUD generation, and is a far better way to initialize this extension in my opinion.