Как установить конфигурацию по умолчанию для 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'],
],
Но это не так. Так что я делаю неправильно? Любые намеки очень ценятся. Спасибо!
Ответы
Ответ 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']
],
];