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" ?
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" ?
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
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.
sort attribute, you may need to turn multi-sort on via 'enableMultiSort' => trueYou can use $action->param or $_GET['sort'] for add to sort with dataProvider.
$_GET['sort'] param. It'is same as my answer, but more detailed about $_GET['sort']. If you want to write other params, then you need to use $action->param. And default functionality is build in BaseDataProvider::setSort() , not in Controller