Yii Bootstrap не работает, если не предварительно загружен

Я использую Yii Bootstrap в приложении на некоторое время. Теперь у меня есть раздел, где загруженные файлы CSS вызывают проблемы, и я не хочу загружать расширение bootstrap в этом контроллере.

в моем файле конфигурации у меня был установлен bootstrap для предварительной загрузки:

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

теперь я удалил bootstrap из массива предварительной загрузки, и он перестает работать, говоря, что псевдоним неверен:

псевдоним "начальная загрузка.штучки.BootNavbar " является недопустимым. Убедитесь, что он указывает на существующий файл или каталог.

псевдоним, хотя был определен в разделе компонентов файла конфигурации и отлично работает, когда компонент начальной загрузки предварительно загружен:

'bootstrap' => array(
    'class' => 'ext.bootstrap.components.Bootstrap'
 ),

что я могу сделать, чтобы расширение bootstrap работало без предварительной загрузки?

3 ответов


просто назвать это:

Yii::app()->getComponent("bootstrap");

'preload' => 'bootstrap' фактически триггеры этой команды. Если вы просто позвоните Yii::app()->bootstrap->init() как предложил Blizz, вы в конечном итоге позвоните init() дважды, что может быть вредным.


Я создаю расширение bootstrap в методе module init () таким образом. Предварительная загрузка не требуется.

 if (!Yii::app()->hasComponent('bootstrap')) {
            Yii::setPathOfAlias('bootstrap', realpath(dirname(__FILE__) . '/extensions/bootstrap'));
            Yii::createComponent('bootstrap.components.Bootstrap')->init();
        }

Если вы хотите управлять компонентом начальной загрузки в Yii:: app () (например, метод hasComponent), вы можете изменить последнюю строку:

Yii::app()->setComponent('bootstrap',Yii::createComponent('bootstrap.components.Bootstrap'));

это решение не требует предварительной загрузки или init (), но вы должны установить псевдоним в папку Boostrap вручную.


вы можете в любое время импортировать его:

Yii::import('ext.bootstrap.components.Bootstrap');