我有很多模特使用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我没有编写所有配置,而是尝试了以下方法,但没有任何效果.
使用容器
\Yii::$container->set(\yii\data\ActiveDataProvider::class,
[
'sort' => [
'defaultOrder' => [
'created_time' => SORT_DESC
]
]
]);
Run Code Online (Sandbox Code Playgroud)覆盖sort扩展类.
class ActiveDataProvider extends \yii\data\ActiveDataProvider {
public $sort = [
'defaultOrder' => [
'created_time' => SORT_DESC
]
];
}
Run Code Online (Sandbox Code Playgroud)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
]
],
]);
Run Code Online (Sandbox Code Playgroud)要为单个GridView执行此操作,您可以添加'defaultOrder' => ['created_time' => SORT_DESC]到以下接受的数组setSort():
$dataProvider->setSort([
'attributes' => [
'id',
...
],
'defaultOrder' => ['created_time' => SORT_DESC]
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9143 次 |
| 最近记录: |