Php 如果未预加载,Yii引导将不工作

Php 如果未预加载,Yii引导将不工作,php,yii,twitter-bootstrap,yii-extensions,Php,Yii,Twitter Bootstrap,Yii Extensions,我已经在一个应用程序中使用了一段时间。现在,我有一个加载的CSS文件导致问题的部分,我不想在该控制器中加载引导扩展 在我的配置文件中,我将引导设置为预加载: 'preload' => array('log', 'bootstrap') 我现在已经从预加载阵列中删除了引导,但由于别名不正确,它停止工作: 别名“bootstrap.widgets.BootNavbar”无效。确保它指向现有的目录或文件 但别名已在配置文件的“组件”部分中定义,并且在预加载引导组件时可以正常工作: 'boots

我已经在一个应用程序中使用了一段时间。现在,我有一个加载的CSS文件导致问题的部分,我不想在该控制器中加载引导扩展

在我的配置文件中,我将引导设置为预加载:

'preload' => array('log', 'bootstrap')
我现在已经从预加载阵列中删除了引导,但由于别名不正确,它停止工作:

别名“bootstrap.widgets.BootNavbar”无效。确保它指向现有的目录或文件

但别名已在配置文件的“组件”部分中定义,并且在预加载引导组件时可以正常工作:

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

如何在不预加载引导扩展的情况下使其工作?

您可以随时导入它:

Yii::import('ext.bootstrap.components.Bootstrap');
就叫这个:


'preload'=>'bootstrap'
实际上触发此命令。如果按照Blizz的建议只调用
Yii::app()->bootstrap->init()
,那么最终将调用
init()
两次,这可能是有害的。

我以这种方式在模块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(),但您必须手动将别名设置为bootstrap文件夹。

名为
bootstrap.widgets.BootNavbar的别名的值是多少?请将其添加到您的问题中。
C:\ProgramFiles\XAMPP\XAMPP\htdocs\myproject\project\protected\extensions\bootstrap\widgets\BootNavbar
预加载
数组中删除引导时,
getPathFalias
返回
false
我想说,您删除的主模块和未删除的子模块之间存在依赖关系。除非您不解决依赖性问题,否则Yii将给出该错误。但很抱歉,我对Yii的理解不是很流利,因为我可以发现依赖性,这样我就可以给出解决依赖性问题的具体建议。我自己使用该组件,只是将其添加为应用程序组件(您也这样做了,否则您将无法预加载)。我只是在需要的地方调用Yii::app()->bootstrap->init())我应该把它放在哪里?我试着把它放在控制器类上,但它仍然不起作用?
Yii::app()->setComponent('bootstrap',Yii::createComponent('bootstrap.components.Bootstrap'));