Yii 2.0排序功能的使用
在Yii2.0项目的实际开发中,经常会遇到使用Yii2.0自带的排序功能。下面是排序功能的具体使用方法。
一、设置排序规则
注意引入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为什么要那么处理的原因。
Yii 2.0排序功能的使用的更多相关文章
- yii去掉自动排序功能
Yii去掉自动排序功能并自定义排序 public function search($params) { $query = SvnManage::find()->addOrderBy([ 'cre ...
- YII 1.0 小功能总结
1.操作成功提示 只能使用一次,getFlash()取值以后,值就删除了 控制器中: Yii::app()->user->setFlash('success','修改成功'); 视图中: ...
- YII关联字段并带搜索排序功能
1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...
- YII框架实现排序
YII框架实现排序 用YII2实现批量修改排序功能,如下图 控制器: /** * Lists all CollectionAlbum models. * @return mixed */ public ...
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- Java实现中文字符串的排序功能
package test; /** * * @Title 书的信息类 * @author LR * @version 1.0 * @since 2016-04-21 */ public class B ...
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能 由于MYSQL没有提供类似ORACLE中OVER()这样丰富的分析函数. 所以在MYSQ ...
- [WPF]ListView点击列头排序功能实现
[转] [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...
- MVC5 Entity Framework学习参加排序、筛选和排序功能
上一篇文章实现Student 基本的实体CRUD操作.本文将展示如何Students Index页添加排序.筛选和分页功能. 以下是排序完成时.经过筛选和分页功能截图,您可以在列标题点击排序. 1.为 ...
随机推荐
- hibernate VS mybatis
1: 一般来说,业务逻辑比较简单,集增删改查就可以满足需求,建议使用hibernate,而复杂的业务逻辑,尤其是多表关联查询,建议使用mybatis. 2: hibernate有更好的二级缓存机制,可 ...
- Linux : Linux命令
接触linux一段时间了,在网上搜罗了一些命令,以备后用.我有点爱上Linux了. 来自 :http://www.php100.com/html/webkaifa/Linux/2009/1106/34 ...
- const_cast标准转换运算符
#include <iostream> using namespace std; class A { public: A() { a=; } public: int a; }; void ...
- Linux中如何开启8080端口供外界访问 和开启允许对外访问的端口8000
举例: 开放10000端口的解决步骤如下: 1.修改/etc/sysconfig/iptables文件,增加如下一行: -A INPUT -m state --state NEW -m tcp -p ...
- 【Data Structure & Algorithm】求子数组的最大和
求子数组的最大和 题目:输入一个整型数组,数组里有正数和负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值,要求时间复杂度为O(n).例如输入数组为1, - ...
- easyui datagrid 列对不齐
function initBIRDataGrid(id,cols){ $('#basicTable').datagrid({ //列表区域 pageList: [5, 10, 15], fit:tru ...
- 如何在内网打洞使得能暴露mstsc端口
说明: 1.目标机器Target,有全部控制权,其所处网络无法向外网暴露端口,但是已知Target的外网地址:Target_internet_addr 2.交换机器Exchange,有全部控制权,其所 ...
- [Xcode 实际操作]九、实用进阶-(14)使用富文本CoreText框架创建丰富多彩的文本
目录:[Swift]Xcode实际操作 本文将演示如何使用富文本CoreText框架创建丰富多彩的文本图形. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] imp ...
- Bootstrap Table 从新InsertRow 刷新表格 数据的问题处理方案
1.第一步获取数据源 var rows = { //要插入的数据,这里要和table列名一致SkuCode: data.rows[i].SkuCode,BarCode: data.rows[i].Ba ...
- Android近场通信---NFC基础(三)(转)
转自 http://blog.csdn.net/think_soft/article/details/8180203 过滤NFC的Intent 要在你想要处理被扫描到的NFC标签时启动你的应用程序,可 ...