Yii 2.0排序功能的使用
2015-08-17 16:50
651 查看
在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能。下面是排序功能的具体使用方法。
一、设置排序规则
注意引入Sort类,如:use yii\data\Sort;
二、使用Yii2.0自带分页功能并加入排序
三、修改Yii2.0排序底层代码
底层对应源码:vendor/yiisoft/yii2.0/data/Sort.php
1.为Sort类增加一个属性:public $sort;
2.在源码大约249行加入以下代码:(实现post获取分页参数)
3.在控制器中接收分页参数,如下:
注意:Yii2.0中id代表按照id正序排序,-id代表按照id逆序排序。这也是上面语句2为什么要那么处理的原因。
一、设置排序规则
注意引入Sort类,如:use yii\data\Sort;
// 设置排序字段 $sortObject = new Sort([ 'sort' => $sort, 'defaultOrder' => ['id' => SORT_DESC], 'attributes' => [ 'id' => [ 'asc' => ['id' => SORT_ASC], 'desc' => ['id' => SORT_DESC], ], 'user_name' => [ 'asc' => ['ecs_users.user_name' => SORT_ASC], 'desc' => ['ecs_users.user_name' => SORT_DESC], ], 'add_time' => [ 'asc' => ['add_time' => SORT_ASC], 'desc' => ['add_time' => SORT_DESC], ], ], ]);
二、使用Yii2.0自带分页功能并加入排序
// 处理分页 $queryClone = clone $query; $totalCount = $queryClone->count(); $pages = new Pagination(['defaultPageSize'=>$rows,'totalCount'=>$totalCount,'pageSizeLimit'=>false]); $query = $query->offset($offset) ->limit($pages->limit) ->orderBy($sortObject->orders) ->asArray() ->all();
三、修改Yii2.0排序底层代码
底层对应源码:vendor/yiisoft/yii2.0/data/Sort.php
1.为Sort类增加一个属性:public $sort;
2.在源码大约249行加入以下代码:(实现post获取分页参数)
// get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数 if(!isset($params[$this->sortParam])){ $params[$this->sortParam] = $this->sort; }
3.在控制器中接收分页参数,如下:
$sort = $_POST['sort'] ? strval($_POST['sort']) : 'id'; $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;
注意:Yii2.0中id代表按照id正序排序,-id代表按照id逆序排序。这也是上面语句2为什么要那么处理的原因。
相关文章推荐
- 用php怎么改文件名
- 性能优化之PHP优化
- php-url-rewriting-with-htaccess-and-microsoft-iis-url-rewriting
- PHP查询MySQL大量数据的内存
- 文本编辑器之editplus
- php利用api搜索下载it-ebooks.info上图书
- 【案例】小心,apc可能导致php-fpm罢工!
- php计划任务
- php生成二维码-PHP QR Code
- php变量声明时的单引号与双引号区别
- PHP常用函数
- 关于ThinkPHP常用的标签--适合菜鸟初学者
- phpstorm常用快捷键
- 关于yii的缓存的学习(学习自慕课网---与《YII框架》不得不说的的故事—高效篇)
- yii2如何引入自定义css或js文件
- PHP记住密码思路
- 如何在xampp中运行php文件
- PHP 输出变量结构信息到日志
- Yii中POS和GET并用范例
- PHP添加图片水印、压缩、剪切的封装类