【问题标题】:Silverstripe PaginatedList - How to display record numbers on current page?Silverstripe PaginatedList - 如何在当前页面上显示记录编号?
【发布时间】:2015-06-17 06:07:45
【问题描述】:

在 silverstripe PaginatedList 中,我们可以显示像 'Showing 1 of 5 Pages' 这样的页码。 例如如何在每页显示记录号 “显示 1-10 条记录,共 100 条”

【问题讨论】:

    标签: pagination silverstripe


    【解决方案1】:

    您已经有一个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 的模板中,您将获得当前页面的结束编号。

    代码未经测试,但应该可以帮助您入门。你必须检查结束数字是否大于总项目数,但我将把这个练习留给你;)

    【讨论】:

    • 是的,我知道。但是如何获得第一个和最后一个记录号,即“显示 1-10”或“显示 30-35”?
    • 嗨 Sneha,我更新了我的分析器。如果它可以帮助您解决问题,请随时接受。
    • 您好,感谢您解决了我的问题。有效。但是$TotalItems 没有用。它显示 datalist 中不存在方法 因为我猜我是在循环之外使用它。所以我使用了$PaginatedList.Count。再次感谢。
    • 我还有一个问题。你能帮忙解决吗?
    • 请针对其他问题提出新问题...或加入 IRC; freenode #silvestripe .. 或两者兼而有之;)
    【解决方案2】:

    如果最近有人遇到这个问题 - 这是至少从 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-09
      • 2016-12-12
      • 2017-09-18
      • 2014-11-02
      • 1970-01-01
      • 2012-02-28
      • 2017-01-19
      • 1970-01-01
      相关资源
      最近更新 更多