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 вручную.