我正在使用CakePHP开发REST API,并希望实现Instagram API分页样式,如下所示:
{
...
"pagination": {
"next_url": "https://api.instagram.com/v1/tags/puppy/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&max_id=13872296",
"next_max_id": "13872296"
}
}
我没有使用任何授权或其他任何内容,因此可以忽略access_token
部分。我的主要动机是将分页链接(最好是跳转链接)作为JSON数据,因此我可以在我的JSON序列化视图中使用它。因为通常的代码:
echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled'));
echo $this->Paginator->numbers(array('separator' => ''));
echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled'));
不起作用,只显示等效的HTML代码。 有什么方法可以像Instagram API那样得到它吗?
答案 0 :(得分:1)
感谢noslone,我得到了答案。这是最终编辑的代码:
$url = 'http://yourapp.com/pages/index/limit:7';
$returnArray = array(
.....
'pagination' => array(
'next_url' => null,
'prev_url' => null
)
);
if($this->Paginator->hasNext()) {
$temp = intval($this->Paginator->current())+1;
$returnArray['pagination']['next_url'] = $url."/page:".$temp;
}
if($this->Paginator->hasPrev()) {
$temp = intval($this->Paginator->current())-1;
$returnArray['pagination']['next_url'] = $url."/page:".$temp;
}
echo json_encode($ returnArray);
只需进行两项更改:首先不要忘记将“limit:value”添加到您的网址,然后再使用带有Paginator的&intval当前。
答案 1 :(得分:0)
据我所知,Paginator助手会生成前端链接,当您点击它时,它会生成下一个链接。 我不认为你可以直接使用它来形成类似Instagram的API。
答案 2 :(得分:0)
尝试以下内容
$url = 'http://yourapp.com/pages/index';
$returnArray = array(
.....
'pagination' => array(
'next_url' => null,
'prev_url' => null
)
);
if($this->Paginator->hasNext()) {
$returnArray['pagination']['next_url'] = $url.'/page:'. ($this->Paginator->current()+1);
}
if($this->Paginator->hasPrev()) {
$returnArray['pagination']['prev_url'] = $url.'/page:'. ($this->Paginator->current()-1);
}
echo json_encode($returnArray);
如果需要,可以在网址中添加更多命名的参数:
$params['pagination']['next_url'] = $url.'/page:'.$this->Paginator->current()+1.'/order:name/direction:asc';