繁体   English   中英

默认情况下如何覆盖CActiveDataProvider方法以默认显示CGridview降序

[英]How to override CActiveDataProvider Method to show CGridview in descending order by default in Yii

我的项目中有许多模型和gridviews,每个模型都有create_dttm字段。

我现在想知道如何覆盖类CActiveDataProvider ,在其中添加DESC Sort condition

'sort' => array(
    'defaultOrder' => 'create_dttm DESC',
)

这样它将对我所有的gridview都有效,而不是在每个gridview中添加条件。

例:

public function search() {

    $criteria = new CDbCriteria;
    $criteria->compare('id', $this->id);
    $criteria->compare('name', $this->name, true);
    $criteria->compare('age', $this->age);
    $criteria->compare('create_dttm', $this->create_dttm, true);
    $criteria->compare('update_dttm', $this->update_dttm, true);

    return new CActiveDataProvider($this, array(
        'criteria' => $criteria,
        'pagination' => array(
            'pageSize' => 10,
        ),
        'sort' => array(
            'defaultOrder' => 'create_dttm DESC',
        )
    ));
}

我该如何处理?

任何帮助,将不胜感激。

让每个模型都继承自BaseModel类,并覆盖默认的scope方法:

<?php
class BaseModel extends CActiveRecord {
...

    public function defaultScope() {
        return array(
            'order' => 'create_dttm DESC',
        );
    }

我认为简单的方法是在每个模型上添加排序变量。

否则,您可以使用下面的方法使用此方法,但是,如果使用这种方法,则还需要更改名称。

http://www.yiiframework.com/wiki/173/an-easy-way-to-use-escopes-and-cactivedataprovider/

所以我的建议是,在每个模型上添加排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM