Intereting Posts

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

Это то, что выглядит сетка в 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'], ], 

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

Вы можете использовать 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', ], ], ], ], ]; 

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

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

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