我在应用程序中使用Yii Bootstrap已有一段时间了。现在,我有一个部分,其中加载的CSS文件导致问题,我不想在该控制器中加载引导程序扩展。
在我的配置文件中,我将bootstrap设置为preload:
'preload' => array('log', 'bootstrap')
我现在已从preload数组中删除了bootstrap,它停止工作说别名不正确:
别名“bootstrap.widgets.BootNavbar”无效。确保它指向现有目录或文件。
别名虽然已在配置文件的components部分中定义,但在预加载引导程序组件时工作正常:
'bootstrap' => array(
'class' => 'ext.bootstrap.components.Bootstrap'
),
如果没有预加载引导程序扩展,我该怎么办?
答案 0 :(得分:13)
请致电:
Yii::app()->getComponent("bootstrap");
'preload' => 'bootstrap'
实际上会对此命令进行操纵。如果您按照Blizz的建议拨打Yii::app()->bootstrap->init()
,则最终会拨打init()
两次,这可能会有害。
答案 1 :(得分:4)
我以这种方式在模块init()方法中创建了bootstrap扩展。不需要预加载。
if (!Yii::app()->hasComponent('bootstrap')) {
Yii::setPathOfAlias('bootstrap', realpath(dirname(__FILE__) . '/extensions/bootstrap'));
Yii::createComponent('bootstrap.components.Bootstrap')->init();
}
如果您想在Yii :: app()下管理Bootstrap组件(例如hasComponent方法),您可以更改最后一行:
Yii::app()->setComponent('bootstrap',Yii::createComponent('bootstrap.components.Bootstrap'));
此解决方案不需要preload或init(),但您必须手动将别名设置为Boostrap文件夹。
答案 2 :(得分:2)
您可以随时导入它:
Yii::import('ext.bootstrap.components.Bootstrap');