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 | = Html::a("批量删除", "javascript:;", ["class" => "btn btn-success batch-del"]) |
- 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/>'; // 几天前 几小时前 |