Yii2-GridView 默认排序问题

简爱 代码>Yii 2017-8-16 21:07 7298 7
Yii2 GridView 使用起来很方便,但是默认排序很是个问题,数据默认按 主键 正序排列 但是在使用过程中,大多数数据默认是 倒序才符合正常思维的。 第一次 的解决方法是在 直接为 `Model` 添加排序 `orderBy('id DESC')` 或 `addOrderBy('id DESC')` 数据理所当然的按照 `id` 倒序排列,但是这样导致新的问题发生 用户在浏览数据的时候 指定排序不管了,但是也一直没去理会,毕竟需求小。 最近在使用由于到问题,决定彻底解决,最后通过翻看源码 找到 `yii\data\Sort` ```php /** * @var array the order that should be used when the current request does not specify any order. * The array keys are attribute names and the array values are the corresponding sort directions. For example, * * ```php * [ * 'name' => SORT_ASC, * 'created_at' => SORT_DESC, * ] * ``` * * @see attributeOrders */ public $defaultOrder; ``` 通过变量名字 `defaultOrder` 就可以看出 `默认排序`。 下面就是动手的时候,找到原有 搜索模型调用 `ActiveDataProvider` 的地方。 如下: ```php /** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Bookmark::find(); // add conditions that should always apply here $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); ``` 在实例化 `ActiveDataProvider` 的时候添加配置 `'sort' => ['defaultOrder' => ['id' => SORT_DESC]],` 即可 修改代码如下 ```php $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => ['defaultOrder' => ['id' => SORT_DESC]], // 新增配置项 默认 id 倒序 ]); ```

本文出自 简爱博客,转载时请注明出处及相应链接。

评论

  1. 智宇 2018-08-02 21:38 回复

    很吊的感觉

  2. 试一试 2018-07-11 21:32 回复

    哈哈哈

  3. 测试员 2018-07-11 21:32 回复

    哈哈哈好

  4. 绿永亭 2018-04-07 20:42 回复

    链接怎么没做成啊

  5. 绿永亭 2017-11-05 22:07 回复

    绿永亭来访!非常漂亮!

  6. 无天旧梦微站 2017-09-09 00:46 回复

    无天旧梦微站

    1. 测试 2017-09-26 17:33 回复

      @无天旧梦微站:大神

发表评论

电子邮件地址不会被公开。必填项已用*标注