假如某个变量仅有几种取值方式,如文章有发表于未发表、性别有男或女等,那么在gridview列设置的时候该如何做?
如对于一篇文章而言,仅有草稿与发表两种状态,则在gridview中可以设置为
[
'attribute'=>'status',
'value' => function($model){
$status = [
News::STATUS_DRAFT => '草稿',
News::STATUS_PUBLISH => '已发表',
];
return $status[$model->status];
},
'filter' => [
News::STATUS_DRAFT => '草稿',
News::STATUS_PUBLISH => '已发表',
],
],
这里,attribute
表示需要设置的属性,它的值对应于模型中的属性;value
表示该属性的取值,在本文中使用匿名函数,根据模型中status
的具体取值而显示草稿
或者已发表
。filter
用于设置搜索框中的内容,在这里使用一个数组,将生成一个下拉菜单,其中包含了两个选项,这两个选项分别为草稿
与已发表
。
这里默认选择为空,如果要使得默认选择为全部,则需要改变设置方式,最方便的方法为设置filter为下拉列表的html字符串
/*
dropDownList的用法:
public static string dropDownList ( $name, $selection = null,
$items = [], $options = [] )
*/
'filter' => Html::dropdownList($searchModel, 'state', [
News::STATUS_DRAFT => '草稿',
News::STATUS_PUBLISH => '已发表',
], ['prompt'=>'全部']);
这里,prompt表示默认选择全部。