CakePHP - 有没有办法对文章的文本使用内置分页?

时间:2011-04-13 01:56:29

标签: php cakephp pagination cakephp-1.3

我想在CakePHP中使用内置的分页(真棒!)。但是 - 有没有办法对单个字段进行分页?

示例 - 如果我有一个10,000字符的文章/故事 - 我可以将其分成两个5,000个字符的页面,而不必编写我自己的分页吗?

1 个答案:

答案 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()根据数据库中的记录总数,每页记录数和请求的页码数,计算要返回的记录数。
  • 它还向视图提供了大量信息,包括返回的记录,我们当前的页面,有多少页面等。
  • 视图中的PaginationHelper会读取此信息,以便为 next / previous 和页码创建正确的链接,每个页码都链接到带有/page:xx/sort:yy参数的网址。
  • 重复这个循环。

您要做的是挂钩Controller::paginate()函数的过程。您需要实现自己的版本,它不会返回多个结果,而是一个“分页”结果。如果它用来执行此操作的参数以及它发送回视图的参数与默认实现相同,则其余的分页逻辑应该完全相同。