As docs say:
[[yii\rest\IndexAction|index]]: list resources page by page
response has view:
curl -i -H "Accept:application/json" "http://192.168.100.5/index.php/tweets"
HTTP/1.1 200 OK
Date: Wed, 30 Mar 2016 12:10:07 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
X-Pagination-Total-Count: 450
X-Pagination-Page-Count: 23
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 20
Link: <http://192.168.100.5/tweets?page=1>; rel=self, <http://192.168.100.5/tweets?page=2>; rel=next, <http://192.168.100.5/tweets?page=23>; rel=last
Content-Length: 4305
Content-Type: application/json; charset=UTF-8
[{"id":71,"text":"Juíza do RS Graziela Bünd.......
I have component which one return - some array (selection from two tables). If i customize indexAction.
public function actions()
{
$actions = parent::actions();
unset($actions['update']);
unset($actions['delete']);
unset($actions['view']);
unset($actions['index']);
return $actions;
}
public function actionIndex($count = 10)
{
/** @var TweetLastfinder $tweetLastFinder */
$tweetLastFinder = Yii::$app->get('tweetlastfinder');
return $tweetLastFinder->findLastTweets($count);
}
Response have correct content but has view:
curl -i -H "Accept:application/json" "http://192.168.100.5/index.php/tweets"
HTTP/1.1 200 OK
Date: Wed, 30 Mar 2016 12:15:36 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Content-Length: 2282
Content-Type: application/json; charset=UTF-8
[{"id":605,"text":"Popular Mus......
In this case i cant use $serializer
, show _meta
etc
I want to use response from component and list resources page by page as it do default action. How it should be done properly?
To get full use of the built in yii\rest\Serializer and show
_meta
or have your urls to look like:your action should return a data provider object that implements the DataProviderInterface which can be any of those:
So it all depends on what kind of object
$tweetLastFinder->findLastTweets()
is returning. If thefindLastTweets
method is returning anActiveQuery
object like:Then just put it into an
ActiveDataProvider
instance:If it returns an array of data or something you can convert to an array then just put it into an
ArrayDataProvider
instance. If it is a more complex object then you'll need to build a custom Data Provider inside which you can wrap it. See how to do that in related docs.