Yii2-GridView 默认排序问题

简爱代码>Yii2017-8-16 21:07384288

Yii2 GridView 使用起来很方便,但是默认排序很是个问题,数据默认按 主键 正序排列

但是在使用过程中,大多数数据默认是 倒序才符合正常思维的。

第一次 的解决方法是在 直接为 Model添加排序orderBy('id DESC')addOrderBy('id DESC')数据理所当然的按照id 倒序排列,但是这样导致新的问题发生 用户在浏览数据的时候 指定排序不管了,但是也一直没去理会,毕竟需求小。

最近在使用由于到问题,决定彻底解决,最后通过翻看源码 找到 yii\data\Sort

    /**
     * @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的地方。

如下:

    /**
     * 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]],即可

修改代码如下

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort' => ['defaultOrder' => ['id' => SORT_DESC]], // 新增配置项 默认 id 倒序
]);

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

评论

  1. VPS2342019-01-25 12:32回复

    这个排版稍微有点乱啊,建议博主优化下哈

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

    很吊的感觉

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

    哈哈哈

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

    哈哈哈好

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

    链接怎么没做成啊

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

    绿永亭来访!非常漂亮!

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

    无天旧梦微站

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

      @无天旧梦微站:大神