GridView可以根据数据库中的数据,制作一张表格。其中attribute是数据库表的列名,如果不设value,显示值就是attribute所设的列的值;如果设置value,attribute值代表搜索栏和列名称,value的值为实际显示值,极端的例子是可以设成其他列的值,像张冠李戴一样。
正常的代码:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//['class' => 'yii\grid\SerialColumn'],
//'id',
['attribute'=>'id',
'contentOptions'=>['width'=>'30px'],
],
'title',
//'author_id',
['attribute'=>'authorName',
'label'=>'作者',
'value'=>'author.nickname'//可以设为其他列的值,类似张冠李戴'status0.name'
],
//'content:ntext',
'tags:ntext',
//'status',
['attribute'=>'status',
'value'=>'status0.name',
'filter'=>Poststatus::find()
->select(['name','id'])
->orderBy('position')
->indexBy('id')
->column(),
'contentOptions'=>['width'=>'110px'],
],
//'create_time:datetime',
//'update_time:datetime',
//'author_id',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
正常的结果:
张冠李戴后:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//['class' => 'yii\grid\SerialColumn'],
//'id',
['attribute'=>'id',
'contentOptions'=>['width'=>'30px'],
],
'title',
//'author_id',
['attribute'=>'authorName',
'label'=>'作者',
'value'=>'status0.name'//可以设为其他列的值,类似张冠李戴'author.nickname'
],
//'content:ntext',
'tags:ntext',
//'status',
['attribute'=>'status',
'value'=>'status0.name',
'filter'=>Poststatus::find()
->select(['name','id'])
->orderBy('position')
->indexBy('id')
->column(),
'contentOptions'=>['width'=>'110px'],
],
//'create_time:datetime',
//'update_time:datetime',
//'author_id',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
显示为:
官方文档: