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表示默认选择全部。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容