How do I set a default configuration for GridView in Yii2 without the widget factory?
13,492
Solution 1
You can use Yii::$container->set().
For example:
// 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',
],
]);
For more information: Dependency Injection Container and Practical Usage
and Yii::$objectConfig has been removed in Yii 2.0.0-beta.
For example (Since version 2.0.11):
$config = [
'id' => 'basic',
// ...
'container' => [
'definitions' => [
yii\grid\GridView::class => [
'tableOptions' => [
'class' => 'table table-condensed',
],
],
],
],
];
For more information: Application Configurations
Solution 2
Edit: This answer is no longer applicable since Yii 2.0.0-beta.
Yii::$objectConfig = [
'yii\grid\GridView' => [
'tableOptions'=>['class'=>'table table-condensed']
],
];
Related videos on Youtube
Author by
ippi
Updated on June 04, 2022Comments
-
ippi almost 2 years
This is what a gridview looks like in Yii2:
<?php echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], ... ['class' => 'yii\grid\ActionColumn'], ], ]); ?>
I want change my grids a little bit, so I add this line:
tableOptions'=>['class'=>'table table-condensed'],
This works great, but...
I want this to be the default value for all my grids!
In Yii 1, this would look like this:
'widgetFactory' => array( 'widgets' => array( 'CGridView' => array( 'htmlOptions' => ['class'=>'table table-condensed'] ), ), ),
In Yii2 however there is no widget factory. Instead, looking at the main config, I would expect this to work:
'grid'=>[ 'class' => 'yii\grid\GridView', 'tableOptions'=>['class'=>'table table-condensed'], ],
But it does not. So what am I doing wrong? Any hints much appreciated. Thanks!
-
Yasar Arafath about 7 yearsShowing as unknown property container