Yii2框架下展示列表数据通常用Gridview
来实现,这里整理常用的小技巧,方便以后查询使用
1 | = GridView::widget([ |
表格整体配置
自定义行样式
单数行为绿色背景,偶数行为红色背景
1 | = GridView::widget([ |
red
和green
需要有对应的样式实现
禁止表头排序
需要ActiveDataProvider
的设置
1 | $dataProvider = new ActiveDataProvider([ "query" => $query, ]); |
表格加表头
1 | = GridView::widget([ |
表格列的配置
列的展示放在 columns
数组中
设定宽度
设置title
列的宽度为100,通过配置项headerOptions
1 | [ |
html渲染
输出的字符串还有html标签,例如<p>Hello World</p
,我们想以p
标签的形式展示Hello World
,需要指定format
为raw
1 | [ |
标题内容样式
内容居中
1 | [ |
字段内容样式
内容换行
1 | [ |
字段不允许点击排序
1 | [ |
是否显示指定列
当type
的值等于1
的时候,name
列才显示,否则该列不显示
1 | [ |
链接可点击跳转
1 | [ |
显示图片
1 | [ |
自定义操作按钮
通过设置ActionColumn
类,修改配置项template
,在buttons项增加template
里增加的log
1 | [ |
操作按钮调用JS
1 | [ |
需要在页面写js实现update_status
方法
自定义字段
在表格里增加一列且数据库中不存在对应的列
1 | [ |
实现批量删除
GridView
设置options
时增加一个id
这里我们命名grid
1 | = GridView::widget([ |
- 批量删除需要用到复选框,在
columns
增加选项复选框,name
值设定为id
方便对数据操作
1 | = GridView::widget([ |
- 页面上增加一个批量删除按钮,这里增加了一个class
batch-del
,方便后面js实现点击效果
1 | "批量删除", "javascript:;", ["class" => "btn btn-success batch-del"]) = Html::a( |
- js实现按钮操作
1 |
|
format
格式
视图中
- 处理html标签
1 | 'format' => 'raw' |
- 处理时间
1 | 'format' => ['date', 'php:Y-m-d H:i'] |
- 处理图片
1 | "format" => [ |
控制器中
yii\i18n\Formatter
常用的属性
$dateFormat
日期格式:yyyy-MM-dd,或者 “short”, “medium”, “long”, or “full”$datetimeFormat
具体时间格式:yyyy-MM-dd HH:mm:ss$locale
区域位置,如果没有设置,将使用 yii\base\Application::$language,按照这一区域的习惯显示格式$defaultTimeZone
时区,默认UTC- 要使用formatter需要在config中的配置
1 | 'formatter' => [ |
格式化
1 | echo Yii::$app->formatter->asRelativeTime(1463632983).'<br/>'; // 几天前 几小时前 |