web-dev-qa-db-ja.com

ウィジェットファクトリなしでYii2のGridViewのデフォルト設定を設定するにはどうすればよいですか?

これは、Yii2でのグリッドビューの外観です。

<?php echo GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        ...
        ['class' => 'yii\grid\ActionColumn'],
    ],
]); ?>

グリッドを少し変更したいので、次の行を追加します。

tableOptions'=>['class'=>'table table-condensed'], 

これはうまく機能しますが...

これをすべてのグリッドのデフォルト値にします!

Yii 1では、これは次のようになります。

'widgetFactory' => array(
    'widgets' => array(
        'CGridView' => array(
            'htmlOptions' => ['class'=>'table table-condensed']
        ),
    ),
),

ただし、Yii2にはウィジェットファクトリはありません。代わりに、メインの構成を見ると、これが機能することが期待されます。

'grid'=>[
    'class' => 'yii\grid\GridView',
    'tableOptions'=>['class'=>'table table-condensed'],
],

しかし、そうではありません。だから私は何が間違っているのですか?どんなヒントも大歓迎です。ありがとう!

17
ippi

Yii :: $ container-> set()を使用できます。

例えば:

// add following line in config/web.php and config/console.php
require __DIR__ . '/container.php';

// creates a config/container.php file and add following
\Yii::$container->set('yii\grid\GridView', [
    'tableOptions' => [
        'class' => 'table table-condensed',
    ],
]);

詳細情報: 依存性注入コンテナ および 実用的な使用法

yii :: $ objectConfigはYii 2.0.0-betaで削除されました。

例(バージョン2.0.11以降):

$config = [
    'id' => 'basic',
    // ...
    'container' => [
        'definitions' => [
            yii\grid\GridView::class => [
                'tableOptions' => [
                    'class' => 'table table-condensed',
                ],
            ],
        ],
    ],
];

詳細情報: アプリケーション構成

22
jamband

編集:Yii 2.0.0-betaのため、この回答は適用されなくなりました。

Yii::$objectConfig = [
    'yii\grid\GridView' => [
        'tableOptions'=>['class'=>'table table-condensed']
    ],
];
4
ippi