我正在从 cakephp 4 迁移到 5.x,并且在 API 中我需要返回分页数据。
在 cakephp 4.x 中
$paging = $this->request->getAttribute("paging");
$paginacao = [];
foreach ($paging as $p):
$paginacao = [
"count" => $p["count"],
"current" => $p["current"],
"perPage" => $p["perPage"],
"page" => $p["page"],
"requestedPage" => $p["requestedPage"],
"pageCount" => $p["pageCount"],
"start" => $p["start"],
"end" => $p["end"],
"prevPage" => $p["prevPage"],
"nextPage" => $p["nextPage"],
];
endforeach;
在 cakephp 5 中?
在 CakePhp5 中,当您对结果集进行分页时,可以使用 PaginatorHelper。为了使用它,您必须将其加载到您的 AppView 上,如下所示:
$this->loadHelper('Paginator');
或
$this->loadHelper('Paginator', ['templates' => 'paginator-templates']);
您可以在控制器上以这种方式使用它(示例):
$this->set('articles', $this->paginate($this->Articles));
或
$query = $this->Articles->find('published')->contain('Comments');
$this->set('articles', $this->paginate($query));
您可以更改分页器选项:
protected array $paginate = [
'limit' => 25,
'order' => [
'Articles.title' => 'asc',
],
];
您可以像这样检索总数:
$this->Paginator->total();
更多文档: