2

モジュールにブートストラップをロードしています:

'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

4

1 に答える 1

1

犯人の行はTbGridViewの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;
}

同じ2行も入ってTbListViewいるので、を使用すればTbListView同じ変更を加えることができます。


更新:これに関してはすでに問題があるようです、そこに投稿された解決策はより良く見えます:

$module = ( Yii::app()->controller->module ? Yii::app()->controller->module : Yii::app() );

$popover = $module->bootstrap->popoverSelector;
$tooltip = $module->bootstrap->tooltipSelector;
于 2012-12-15T03:35:55.230 に答える