Подтвердить что ты не робот

Как установить конфигурацию по умолчанию для GridView в Yii2 без виджета factory?

Вот что выглядит сетка в 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, однако, нет виджета factory. Вместо этого, глядя на главный конфиг, я ожидаю, что это сработает:

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

Но это не так. Так что я делаю неправильно? Любые намеки очень ценятся. Спасибо!

4b9b3361

Ответ 1

Вы можете использовать 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-бета.

Например (Начиная с версии 2.0.11):

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

Для получения дополнительной информации: Конфигурации приложений

Ответ 2

Изменить: этот ответ больше не применим с Yii 2.0.0-beta.

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