yii2 gridview默认排序

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 倒序
]);

 

转载于:https://www.cnblogs.com/niuben/p/10756161.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要给Yii2-GridView中的自定义字段增加排序功能,可以通过以下步骤实现: 1. 在GridView的columns属性中,为自定义字段添加‘attribute’属性(指定排序用的字段),‘label’属性(指定在表头显示的名称),以及‘value’属性(指定自定义字段的值)。 2. 在GridView的dataProvider属性中,为排序用的字段添加一个Sort属性。 3. 在GridView中的排序链接中,为自定义字段添加一个sort参数,指定排序用的字段。 以下是一个示例代码: ``` use yii\grid\GridView; use yii\data\ActiveDataProvider; use yii\data\Sort; $dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => [ 'attributes' => [ 'custom_field' => [ 'asc' => ['custom_field' => SORT_ASC], 'desc' => ['custom_field' => SORT_DESC], 'label' => 'Custom Field', ], ], ], ]); echo GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ 'id', 'name', [ 'attribute' => 'custom_field', 'label' => 'Custom Field', 'value' => function ($model) { return $model->customField; } ], ], 'sorter' => [ 'attributes' => [ 'custom_field' => [ 'asc' => ['custom_field' => SORT_ASC], 'desc' => ['custom_field' => SORT_DESC], ], ], ], ]); ``` 在以上代码中,我们为自定义字段‘custom_field’添加了一个Sort属性,然后在GridView中为该字段添加了‘attribute’、‘label’和‘value’属性。最后,在排序链接中为自定义字段添加了‘sort’参数,指定排序用的字段。这样就可以为Yii2-GridView中的自定义字段增加排序功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值