gpt4 book ai didi

yii2 - 覆盖 Yii2 中 ActiveDataProvider 的默认排序

转载 作者:行者123 更新时间:2023-12-04 22:45:00 25 4
gpt4 key购买 nike

我有很多模型使用 created_time .我希望所有的 GridViews 都显示按 created_time 排序的模型描述

现在我写这样的东西

$dataProvider = new \yii\data\ActiveDataProvider([
'query' => MyModel::find(),
'sort' => [
'defaultOrder' => [
'created_time' => SORT_DESC
]
],
]);

而不是写所有 sort配置我尝试了下面的方法,但没有任何效果。
  • 使用容器
    \Yii::$container->set(\yii\data\ActiveDataProvider::class,
    [
    'sort' => [
    'defaultOrder' => [
    'created_time' => SORT_DESC
    ]
    ]
    ]);
  • 覆盖 sort在扩展课上。
    class ActiveDataProvider extends \yii\data\ActiveDataProvider {

    public $sort = [
    'defaultOrder' => [
    'created_time' => SORT_DESC
    ]
    ];

    }
  • 覆盖之前 init()在扩展类中工作,但如果实例化尝试再次覆盖,它将不起作用。
    class ActiveDataProvider extends \yii\data\ActiveDataProvider {
    public function init() {
    $this->sort = [
    'defaultOrder' => [
    'created_time' => SORT_DESC
    ]
    ];
    parent::init();
    }

    }

    //but this won't work if I want to use the ascending
    $dataProvider = new \app\components\data\ActiveDataProvider([
    'query' => MyModel::find(),
    'sort' => [
    'defaultOrder' => [
    'created_time' => SORT_ASC
    ]
    ],
    ]);
  • 最佳答案

    要为单个 GridView 执行此操作,您可以添加 'defaultOrder' => ['created_time' => SORT_DESC]setSort() 接受的数组:

        $dataProvider->setSort([
    'attributes' => [
    'id',
    ...
    ],
    'defaultOrder' => ['created_time' => SORT_DESC]
    ]);

    关于yii2 - 覆盖 Yii2 中 ActiveDataProvider 的默认排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28580818/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com