我正在将bootstrap加载到模块中:
'modules'=>array(
'admin'=>array(
'preload'=>array('bootstrap'),
'components'=>array(
'bootstrap'=>array(
'class'=>'ext.bootstrap.components.Bootstrap',
'responsiveCss' => true,
),
)
),
),
在GridView中我正在尝试创建一个TbButtonColumn:
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'htmlOptions'=>array('style'=>'width: 50px'),
),
返回CException
未定义属性“CWebApplication.bootstrap”。
因为它指向主配置应用程序中的一个显然不存在的引导程序,如何在模块中加载引导程序时引用它?
我试过了:
components.bootstrap.widgets.TbButtonColumn
admin.components.bootstrap.widgets.TbButtonColumn
admin.bootstrap.widgets.TbButtonColumn
答案 0 :(得分:1)
罪魁祸首在TbGridView's init()
:
$popover = Yii::app()->bootstrap->popoverSelector;
$tooltip = Yii::app()->bootstrap->tooltipSelector;
将它们更改为此将有助于:
if (!($module=Yii::app()->controller->module)){// access as application component (original behavior)
$popover = Yii::app()->bootstrap->popoverSelector;
$tooltip = Yii::app()->bootstrap->tooltipSelector;
}
else {// access as module component
$popover = $module->bootstrap->popoverSelector;
$tooltip = $module->bootstrap->tooltipSelector;
}
同样的两行也在TbListView
中,因此如果您使用TbListView
,则可以进行相同的更改。
更新:关于此问题似乎已经有了issue,那里发布的解决方案看起来更好:
$module = ( Yii::app()->controller->module ? Yii::app()->controller->module : Yii::app() );
$popover = $module->bootstrap->popoverSelector;
$tooltip = $module->bootstrap->tooltipSelector;