Sorting data in default rest api - Yii2 framework

2019-05-06 18:47发布

问题:

I setup the default rest api in yii2 and it gives me the list of users when I run "api/web/v1/users" using get method.

Is there any way to sort the output data like "api/web/v1/users?sort=name desc" ?

回答1:

See https://github.com/githubjeka/yii2-rest/blob/master/rest/versions/v1/controllers/PostController.php#L35

You can use $action->param or $_GET['sort'] for add to sort with dataProvider.



回答2:

There is no need to write code for it. Yii already supports inverse sorting by adding a negative sign to attribute name as shown here [Yii core code].

Unless name is not included in your model's safe attributes list, you can just use sort=-name instead of sort=name desc :

api/web/v1/users?sort=-name
  • Note: you can also chain sorting within commas : api/web/v1/users?sort=-name,id,-date

Otherwise if your field is not a safe attribute or when advanced sorting is needed, then you'll have to override IndexAction::prepareDataProvider or configure it to return an activeDataProvider which specifies how your sorting should work.



标签: yii2