我的项目中有很多模型和网格视图,每个模型都有create_dttm
字段。
我现在想如何覆盖我将添加CActiveDataProvider
DESC Sort condition
即
'sort' => array(
'defaultOrder' => 'create_dttm DESC',
)
这样它就可以用于我的所有网格视图,而不是在每个网格视图中添加条件。
示例:
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',
)
));
}
我该如何处理?
任何帮助都将不胜感激。
答案 0 :(得分:2)
让每个模型从BaseModel类继承,并覆盖默认范围方法:
<?php
class BaseModel extends CActiveRecord {
...
public function defaultScope() {
return array(
'order' => 'create_dttm DESC',
);
}
答案 1 :(得分:1)
我认为简单的方法是在每个模型上添加sort变量。
或者您可以使用此方法作为以下链接,但如果您使用这种方式,您也需要更改名称。
http://www.yiiframework.com/wiki/173/an-easy-way-to-use-escopes-and-cactivedataprovider/
所以我的建议是,在每个模型上添加排序。