【发布时间】:2015-06-17 06:07:45
【问题描述】:
在 silverstripe PaginatedList 中,我们可以显示像 'Showing 1 of 5 Pages' 这样的页码。 例如如何在每页显示记录号 “显示 1-10 条记录,共 100 条”
【问题讨论】:
在 silverstripe PaginatedList 中,我们可以显示像 'Showing 1 of 5 Pages' 这样的页码。 例如如何在每页显示记录号 “显示 1-10 条记录,共 100 条”
【问题讨论】:
您已经有一个PaginatedList。使用getTotalItems() 可以获得项目总数。
在您的模板中,当您在列表范围内时,它是$TotalItems。
编辑: $PageStart 给出当前页面的开始,$PageLength 给出当前页面上的项目数量,因此您可以计算当前项目的结束数量。
您可以使用Extension 来执行此操作,例如PaginatedList,例如
class PaginatedListEndNumberExtension extends Extension {
public function getPageEnd() {
return $this->owner->getPageStart() + $this->owner->getPageLength()
}
}
在你的 /mysite/_config/config.yml
PaginatedList:
extensions:
- PaginatedListEndNumberExtension
所以在带有$PageEnd 的模板中,您将获得当前页面的结束编号。
代码未经测试,但应该可以帮助您入门。你必须检查结束数字是否大于总项目数,但我将把这个练习留给你;)
【讨论】:
$TotalItems 没有用。它显示 datalist 中不存在方法 因为我猜我是在循环之外使用它。所以我使用了$PaginatedList.Count。再次感谢。
如果最近有人遇到这个问题 - 这是至少从 Silverstripe 3 开始的默认功能。不需要任何扩展。 API文档:https://docs.silverstripe.org/en/4/developer_guides/templates/how_tos/pagination/
你需要的两个变量:
$FirstItem
$LastItem
例如
Showing $Results.FirstItem - $Results.LastItem of $Results.TotalItems
【讨论】: