在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能。下面是排序功能的具体使用方法。

一、设置排序规则

注意引入Sort类,如:use yii\data\Sort;

  1. // 设置排序字段
  2. $sortObject = new Sort([
  3. 'sort' => $sort,
  4. 'defaultOrder' => ['id' => SORT_DESC],
  5. 'attributes' => [
  6. 'id' => [
  7. 'asc' => ['id' => SORT_ASC],
  8. 'desc' => ['id' => SORT_DESC],
  9. ],
  10. 'user_name' => [
  11. 'asc' => ['ecs_users.user_name' => SORT_ASC],
  12. 'desc' => ['ecs_users.user_name' => SORT_DESC],
  13. ],
  14. 'add_time' => [
  15. 'asc' => ['add_time' => SORT_ASC],
  16. 'desc' => ['add_time' => SORT_DESC],
  17. ],
  18. ],
  19. ]);

 二、使用Yii2.0自带分页功能并加入排序

  1. // 处理分页
  2. $queryClone = clone $query;
  3. $totalCount = $queryClone->count();
  4. $pages = new Pagination(['defaultPageSize'=>$rows,'totalCount'=>$totalCount,'pageSizeLimit'=>false]);
  5. $query = $query->offset($offset)
  6. ->limit($pages->limit)
  7. ->orderBy($sortObject->orders)
  8. ->asArray()
  9. ->all();

三、修改Yii2.0排序底层代码

底层对应源码:vendor/yiisoft/yii2.0/data/Sort.php

1.为Sort类增加一个属性:public $sort;

2.在源码大约249行加入以下代码:(实现post获取分页参数)

  1. // get请求获取数组为空,则调用自定义属性sort。用于满足post获取后处理自定义参数
  2. if(!isset($params[$this->sortParam])){
  3. $params[$this->sortParam] = $this->sort;
  4. }

3.在控制器中接收分页参数,如下:

  1. $sort = $_POST['sort'] ? strval($_POST['sort']) : 'id';
  2. $sort = $_POST['order'] == 'asc' ? $sort : '-'.$sort;

注意:Yii2.0中id代表按照id正序排序,-id代表按照id逆序排序。这也是上面语句2为什么要那么处理的原因。

Yii 2.0排序功能的使用的更多相关文章

  1. yii去掉自动排序功能

    Yii去掉自动排序功能并自定义排序 public function search($params) { $query = SvnManage::find()->addOrderBy([ 'cre ...

  2. YII 1.0 小功能总结

    1.操作成功提示 只能使用一次,getFlash()取值以后,值就删除了 控制器中: Yii::app()->user->setFlash('success','修改成功'); 视图中: ...

  3. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  4. YII框架实现排序

    YII框架实现排序 用YII2实现批量修改排序功能,如下图 控制器: /** * Lists all CollectionAlbum models. * @return mixed */ public ...

  5. 禁用datagridview中的自动排序功能

    把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...

  6. Java实现中文字符串的排序功能

    package test; /** * * @Title 书的信息类 * @author LR * @version 1.0 * @since 2016-04-21 */ public class B ...

  7. MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能

    MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能 由于MYSQL没有提供类似ORACLE中OVER()这样丰富的分析函数. 所以在MYSQ ...

  8. [WPF]ListView点击列头排序功能实现

    [转]   [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...

  9. MVC5 Entity Framework学习参加排序、筛选和排序功能

    上一篇文章实现Student 基本的实体CRUD操作.本文将展示如何Students Index页添加排序.筛选和分页功能. 以下是排序完成时.经过筛选和分页功能截图,您可以在列标题点击排序. 1.为 ...

随机推荐

  1. 【旧文章搬运】Win7可变对象头结构之InfoMask解析

    原文发表于百度空间,2010-08-11========================================================================== 对Wind ...

  2. StackOverFlow页面不正常,因为CDN被墙了

    190.93.247.58 cdn.sstatic.net 198.252.206.140 sstatic.net http://stackoverflow.com/

  3. 爬虫中Xpath有时候是无效的

    http://www.cnblogs.com/lchzls/p/6282790.html给出了两种方案

  4. Flutter实战视频-移动电商-21.分类页_类别信息接口调试

    21.分类页_类别信息接口调试 先解决一个坑 取消上面的GridVIew的回弹效果.就是在拖这个gridview的时候有一个滚动的效果 physics: NeverScrollableScrollPh ...

  5. SQL——登陆触发器实现限制IP

    [转载]原文地址:https://www.baidu.com/link?url=N-SM28ge21TTYky79dYk8otsjKgYCIpy-0RBSvMV25f8KSOsYczhxTOCzeNZ ...

  6. Structure Streaming和spark streaming原生API访问HDFS文件数据对比

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Structure Stream访问方式 code examples import org.apache.sp ...

  7. 模板 - 数据结构 - ST表 + 二维ST表

    区间最大值,$O(nlogn)$ 预处理,$O(1)$ 查询,不能动态修改.在查询次数M显著大于元素数量N的时候看得出差距. 令 $f[i][j]$ 表示 $[i,i+2^j-1]$ 的最大值. 显然 ...

  8. Linux之解决每次git pull/git push都需输入密码设置

    操作命令: //执行这两条命令cd / git config --global credential.helper store 执行完命令之后会在.gitconfig文件中多加红色字体 [user] ...

  9. Java程序员需要突破的技术要点

    一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...

  10. Validation(1)

    站在巨人的肩膀上 Java Bean Validation 最佳实践 参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操 ...