Yii2-GridView自定义数据列

本文同时收录于 超能小紫的Yii2学习笔记

用gii生成Model和CRUD之后,基本的增删查改和列表页都有了
但在很多时候,默认生成的列表所展示的 数据列 并不一定是我们想展示的

修改所展示的数据列

打开视图层目录,找到刚生成出来的index.php,阅读其代码
稍有常识的人都能看出, 控制数据列显示的就是GridView::widget方法的参数数组中的columns
它大概长这样:

我们只要将其他字段解除屏蔽、屏蔽掉自己不想显示的字段就行了

显示关联字段

举个例子,我有个文章表Article,表里有个作者id author_id字段
这个字段跟作者表Author的主键id相关联
我希望在文章列表中显示作者的名称(name),要怎么做呢?

首先,给Article模型添加如下方法

如果你不知道这有什么用,请阅读 Yii2手册 内的 查询关联的数据 一节

然后,给columns数组添加一个成员author.name就行啦!就是这么方便!

自定义数据列内容

但是很多时候,光是控制显示哪些字段还是不够的
还是上面的例子,我有个文章表Article,表里有个状态Status字段,值0表示隐藏、1表示显示
但我总不能在列表里直接显示0和1啊,筛选搜索时也不能要求用户输入0和1啊,体验多不好
这时,我们就需要自定义数据列内容了

定义常量

首先打开文章模型层,添加两个常量

这一步不是必须的,但这是一个良好的编程习惯

修改数据列

打开视图层index.php,将columns数组里的status成员改为数组

注意,format 如果使用 html,则会严格检测各属性是否合法
例如 data-idabc 这样的非标准属性会被删除。因此建议使用 row

保存,刷新页面,你就会惊喜地发现 状态 列不再是单调的0和1啦!过滤器也变成可选下拉框了

1 条评论

昵称
  1. 做整容手术要多少钱

    不错 谢谢博主啊