yii2 gridview 列格式设置--设置枚举类型

假如某个变量仅有几种取值方式,如文章有发表于未发表、性别有男或女等,那么在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表示默认选择全部。

你可能感兴趣的:(yii2 gridview 列格式设置--设置枚举类型)