yii2 GridView常见操作,yii2gridview_PHP教程
程序员文章站
2022-06-02 20:26:10
...
yii2 GridView常见操作,yii2gridview
作者:白狼 出处:http://www.manks.top/article/yii2_gridview
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
收集了网络上GridView出现的大部分问题做一个总结,希望有一个能帮助到你。
如果下面有没说到的GridView常见问题,下方留言,我会进行补充。
-
下拉搜索
-
日期格式化并实现日期可搜索
-
根据参数进行是否显示
-
链接可点击跳转
-
显示图片
-
html渲染
-
自定义按钮
-
设定宽度等样式
-
自定义字段
-
自定义行样式
-
增加按钮调用js操作
下拉搜索,我们先来看看预期的效果图
具体怎么实现喃?考虑到一张数据表要下拉效果的字段可能有很多个,我们先在其model中实现一个方法方便后续操作
1 /** 2 * 下拉筛选 3 * @column string 字段 4 * @value mix 字段对应的值,不指定则返回字段数组 5 * @return mix 返回某个值或者数组 6 */ 7 public static function dropDown ($column, $value = null) 8 { 9 $dropDownList = [ 10 'is_delete'=> [ 11 '0'=>'显示', 12 '1'=>'删除', 13 ], 14 'is_hot'=> [ 15 '0'=>'否', 16 '1'=>'是', 17 ], 18 //有新的字段要实现下拉规则,可像上面这样进行添加 19 // ...... 20 ]; 21 //根据具体值显示对应的值 22 if ($value !== null) 23 return array_key_exists($column, $dropDownList) ? $dropDownList[$column][$value] : false; 24 //返回关联数组,用户下拉的filter实现 25 else 26 return array_key_exists($column, $dropDownList) ? $dropDownList[$column] : false; 27 }
然后我们上代码看看具体怎么实现的下拉搜索
= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ // ...... [ 'attribute' => 'is_hot', 'value' => function ($model) { return Article::dropDown('is_hot', $model->is_hot); }, 'filter' => Article::dropDown('is_hot'), ], [ 'attribute' => 'is_delete', 'value' => function ($model) { return Article::dropDown('is_delete', $model->is_delete); }, 'filter' => Article::dropDown('is_delete'), ], // ...... ], ]); ?>
像这样,我们就简单地实现了两个下拉效果,要实现筛选功能,在你的dataProvider自定添加该字段的搜索条件即可
日期格式化,我们先来看看效果图
这个我们分情况讨论
1、如果你的数据库字段created_at存的时间格式是date或者datetime,那很简单,gridview中直接输出该字段created_at即可,如上图中右侧所示
2、如果数据库存入的时间戳类型,如上图中左侧所示,则需要像下面这样进行输出
[ 'attribute' => 'created_at', 'value' => function ($model) { return date('Y-m-d H:i:s', $model->created_at); }, ], [ 'attribute' => 'created_at', 'format' => ['date', 'Y-m-d H:i:s'], ],
以上展示了两种方式进行格式输出,都可以。但是,如果想要实现搜索的机制,如果你的数据库存入的是datetime型,很方便,dataProvider不用做修改,
代码如下
$query->andFilterWhere([ // ...... 'created_at' => $this->created_at, // ...... ]);
如果你的数据库存入的是时间戳,
第一步,修改对应规则如下图所示
第二步,修改dataProvider可参考如下代码
//我们搜索输入框中输入的格式一般是 2016-01-01 而非时间戳 //输出2016-01-01无非是想搜索这一天的数据,因此代码如下 if ($this->created_at) { $createdAt = strtotime($this->created_at); $createdAtEnd = $createdAt + 24*3600; $query->andWhere("created_at >= {$createdAt} AND created_at $createdAtEnd
上一篇: php日期转中文程序代码
推荐阅读
-
yii2 GridView 下拉搜索实现案例教程 - 白狼栈
-
Yii2 rbac权限控制操作步骤实例教程
-
浅析Yii2 GridView实现下拉搜索教程
-
浅析Yii2 gridview实现批量删除教程
-
浅析Yii2中GridView常见操作
-
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
-
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
-
MongoDB入门教程(包含安装、常用命令、相关概念、使用技巧、常见操作等)
-
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
-
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程