基本用法
网格列的配置。 每个数组元素表示一个特定的网格列的配置。例如,
[ ['class' => SerialColumn::className()], [ 'class' => DataColumn::className(), // this line is optional 'attribute' => 'name', 'format' => 'text', 'label' => 'Name', ], ['class' => CheckboxColumn::className()], ]
如果列是 yii\grid\DataColumn 的类,"class" 元素将会被省略。
作为快捷方式格式, 可以使用字符串来指定包含 attribute, format 和/或 label 选项:"attribute:format:label"。 例如,上面的 "name" 列也可以指定为:"name:text:Name"。 "format" 和 "label" 都是可选的。如果不存在,它们将采用默认值。
使用快捷方式格式,在简单情况下,列的配置如下所示:
[ 'id', 'amount:currency:Total Amount', 'created_at:datetime', ]
将 $dataProvider 与活动记录一起使用时,你可以显示相关记录中的值, 例如 author 关联的 name 属性:
// shortcut syntax 'author.name', // full syntax [ 'attribute' => 'author.name', // ... ]
详细请查看 https://www.yiichina.com/doc/api/2.0/yii-grid-gridview#$columns-detail
DataColumn几个功能类
ActionColumn 显示操作按钮等
CheckboxColumn 显示复选框
RadioButtonColumn 显示单选框
SerialColumn 显示行号
自定义显示内容
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ // ... [ 'attribute' => 'status', 'value'=>function($model){ return $model->status?'禁用':'启用'; } ], [ 'attribute' => 'name', 'content'=>function($model, $key, $index, $column){ return $model->name; } ], // ... ], ]); ?>
匿名函数中利用系统参数展示
// 任意地方定义 <?php Yii::$app->params['statusLabels'] = ['禁用','启用']; ?> // 直接使用 <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ // ... [ 'attribute' => 'status', 'value'=>function($model){ return Yii::$app->params['statusLabels'][$model->status]; } ], // ... ], ]); ?>
自定义搜索栏
增加过滤下拉,这个主要是看filter
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ // ... [ 'attribute' => 'status', 'filter' => Html::activeDropDownList($searchModel, 'status', [0=>'禁用',1=>'启用'], ['class' => 'form-control']), 'value'=>function($model){ return $model->status?'禁用':'启用'; } ], // ... ], ]); ?>
自定义控制列样式
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ // ... [ 'attribute' => 'status', 'headerOptions'=>['class'=>'text-center'], 'contentOptions'=>['class'=>'text-center'], ], // ... ], ]); ?>