小编Eri*_*ock的帖子

覆盖Yii2中ActiveDataProvider的默认排序

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

现在我写这样的东西

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

sort我没有编写所有配置,而是尝试了以下方法,但没有任何效果.

  1. 使用容器

    \Yii::$container->set(\yii\data\ActiveDataProvider::class,
            [
        'sort' => [
            'defaultOrder' => [
                'created_time' => SORT_DESC
            ]
        ]
    ]);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 覆盖sort扩展类.

    class ActiveDataProvider extends \yii\data\ActiveDataProvider {
    
        public $sort = [
            'defaultOrder' => [
                'created_time' => SORT_DESC
            ]
        ];
    
     }
    
    Run Code Online (Sandbox Code Playgroud)
  3. init()在扩展类之前覆盖工作,但如果实例化尝试再次覆盖它将无法工作.

    class ActiveDataProvider extends \yii\data\ActiveDataProvider {
        public function init() {
            $this->sort = [
                'defaultOrder' => …
    Run Code Online (Sandbox Code Playgroud)

yii2

3
推荐指数
1
解决办法
9143
查看次数

标签 统计

yii2 ×1