我正在使用CakePHP 3.2.7。在我的控制,我分页表如下:cakephp 3.2.7分页 - 忽略页面选项
class CollectionsController extends AppController
{
public function index()
{
$page_number = 1;
$page_size = 10;
if($this->request->query('page') !== null){
if(array_key_exists('number', $this->request->query('page'))){
$page_number = $this->request->query['page']['number'];
}
if(array_key_exists('size', $this->request->query('page'))){
$page_size = $this->request->query['page']['size'];
}
}
$this->paginate = [
'limit' => $page_size,
'page' => $page_number,
//'order' => ['Collections.id' => 'desc']
];
$collections = $this->paginate($this->Collections->find('all'));
$this->set(compact('collections'));
$this->set('_serialize', true);
}
}
的PAGINATE选项limit
和order
做的工作。但是,page
和offset
(未显示)选项似乎被忽略。当打印的$this->request->params['paging']
内容(请求第2页时的表2连3排的尺寸/限制,查询像http://localhost:8765/api/collections?page[number]=2&page[size]=2
),我得到:
"finder": "all",
"page": 1,
"current": 2,
"count": 3,
"perPage": 2,
"prevPage": false,
"nextPage": true,
"pageCount": 2,
"sort": null,
"direction": false,
"limit": null,
"sortDefault": false,
"directionDefault": false
的perPage
选项的值为2(我期望)但是page
的值为1(当它应该是2)。为什么page
选项在其他分页选项正在工作时被忽略?
感谢您的回复。我正在尝试通过您提到的页码。 (请参考问题中的这一行:''page'=> $ page_number,')。问题是,不管我设置的页码是多少,它总是默认为1. – Elfalem
正确,因为你没有正确传递它。你不需要这个代码'page'=> $ page_number',这是你自动处理的内容。首先,删除'page'=> $ page_number',然后进入你的浏览器和'http:// localhost:8765/api/collections?page = 2&size = 2'你也需要修改:'$ page_size = $ this- > request-> query ['page'] ['size'];'to:'$ page_size = $ this-> request-> query ['size'];'为上面的url工作。 – Jsonras