如何在没有widget工厂的情况下在Yii2中设置GridView的默认配置?

ipp*_*ppi 16 php yii2

这就是Yii2中gridview的样子:

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

我想稍微更改我的网格,所以我添加这一行:

tableOptions'=>['class'=>'table table-condensed'], 
Run Code Online (Sandbox Code Playgroud)

这很好用,但......

我希望这是我所有网格的默认值!

在Yii 1中,这将是这样的:

'widgetFactory' => array(
    'widgets' => array(
        'CGridView' => array(
            'htmlOptions' => ['class'=>'table table-condensed']
        ),
    ),
),
Run Code Online (Sandbox Code Playgroud)

但是在Yii2中没有小部件工厂.相反,看看主配置,我希望这可以工作:

'grid'=>[
    'class' => 'yii\grid\GridView',
    'tableOptions'=>['class'=>'table table-condensed'],
],
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.那么我做错了什么?任何提示非常感谢.谢谢!

jam*_*and 20

您可以使用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',
    ],
]);
Run Code Online (Sandbox Code Playgroud)

有关更多信息:依赖注入容器实际用法

和Yii :: $ objectConfig已在Yii 2.0.0-beta中删除.

例如(从2.0.11版开始):

$config = [
    'id' => 'basic',
    // ...
    'container' => [
        'definitions' => [
            yii\grid\GridView::class => [
                'tableOptions' => [
                    'class' => 'table table-condensed',
                ],
            ],
        ],
    ],
];
Run Code Online (Sandbox Code Playgroud)

有关更多信息:应用程序配置