我想在CakePHP中使用内置的分页(真棒!)。但是 - 有没有办法对单个字段进行分页?
示例 - 如果我有一个10,000字符的文章/故事 - 我可以将其分成两个5,000个字符的页面,而不必编写我自己的分页吗?
答案 0 :(得分:2)
默认分页适用于SQL LIMIT
子句,它们适用于记录级别。您必须至少使用自定义逻辑覆盖Controller::paginate
方法,以执行您需要执行的操作(只需在控制器中创建function paginate()
)。你应该能够重用PaginatorHelper,至少可以通过设置它所能接受的所有正确参数来重用它。在视图中尝试debug($this->params)
或查看default paginate
implementation以查看这些变量是什么。
分解:
$result = $this->paginate()
,这会返回您的分页结果。paginate()
函数在内部查看URL参数(/page:42/sort:foobar
等)以确定应返回的记录。paginate()
根据数据库中的记录总数,每页记录数和请求的页码数,计算要返回的记录数。/page:xx/sort:yy
参数的网址。您要做的是挂钩Controller::paginate()
函数的过程。您需要实现自己的版本,它不会返回多个结果,而是一个“分页”结果。如果它用来执行此操作的参数以及它发送回视图的参数与默认实现相同,则其余的分页逻辑应该完全相同。