morozgrafix / paginator-twig-extension
一个Twig扩展,用于帮助在Twig模板中生成简单的分页。
v0.1.0
2019-05-08 18:43 UTC
Requires
- php: ^7.0
- twig/twig: ^2.0
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-11 15:13:56 UTC
README
一个Twig扩展,用于帮助在Twig模板中生成简单的分页。
简介
此扩展帮助在Twig模板中构建分页。它将返回一个包含所有必要信息的数组,以便快速显示分页链接。它不会生成任何HTML,如何显示取决于您。以下示例展示了生成与Bootstrap CSS框架兼容的分页的一种方法。
使用以下函数调用此扩展,并接受以下参数
paginator(int current_page, int last_page, int num_items, string separator)
参数详情
current_page- 访问者当前所在的页面last_page- 数据集中的最后一页(总页数)num_items- 分页条中将要显示的项目数量。 注意: 允许的最小值是7,如果传递的是偶数,则将其增加为下一个奇数以保持对称。separator(可选)- 用于分页条中不可见的数字的自定义分隔符。默认设置为...
基本示例
调用
{% set paginator = paginator(1, 10 , 7) %}
将设置paginator twig变量为
array ( 'curr_page' => 1, 'last_page' => 10, 'num_items' => 7, 'separator' => '...', 'pagination' => array ( 0 => 1, 1 => 2, 2 => 3, 3 => 4, 4 => 5, 5 => '...', 6 => 10, ), )
安装
使用Composer
composer require morozgrafix/paginator-twig-extension
在Twig模板中的逻辑
以下示例与Bootstrap 4 CSS框架兼容。
<nav aria-label="pagination"> <ul class="pagination justify-content-center"> {# Optional Prev #} <li class="page-item {% if paginator.curr_page == 1 %} disabled{% endif %}"> <a class="page-link" href="?page={{ paginator.curr_page-1 }}">Prev</a> </li> {# Main Pagination Loop #} {% for i in paginator.pagination %} <li class="page-item{% if i == paginator.curr_page %} active{% endif %}{% if i == paginator.separator %} disabled{% endif %}"> <a class="page-link" href="?page={{ i }}">{{ i }}</a> </li> {% endfor %} {# Optional Next #} <li class="page-item {% if paginator.curr_page == paginator.last_page %} disabled{% endif %}"> <a class="page-link" href="?page={{ paginator.curr_page+1 }}">Next</a> </li> </ul> </nav>
包含可选的上一页/下一页的结果
不包含上一页/下一页的结果
其他示例
自定义分隔符
{% set paginator = paginator(10, 25 , 11, '¯\_(ツ)_/¯') %}
结果
array ( 'curr_page' => 10, 'last_page' => 25, 'num_items' => 11, 'separator' => '¯\\_(ツ)_/¯', 'pagination' => array ( 0 => 1, 1 => '¯\\_(ツ)_/¯', 2 => 7, 3 => 8, 4 => 9, 5 => 10, 6 => 11, 7 => 12, 8 => 13, 9 => '¯\\_(ツ)_/¯', 10 => 25, ), )
指定了偶数个项目,为了显示对称性,它被增加到下一个奇数(10 -> 11)
{% set paginator = paginator(420, 999 , 10) %}
结果
array ( 'curr_page' => 420, 'last_page' => 999, 'num_items' => 11, 'separator' => '...', 'pagination' => array ( 0 => 1, 1 => '...', 2 => 417, 3 => 418, 4 => 419, 5 => 420, 6 => 421, 7 => 422, 8 => 423, 9 => '...', 10 => 999, ), )
附言
这是我写的第一个Twig扩展,它是在我开发一个需要分页的更大项目期间迅速开发的。我确信有一些陷阱和可以添加的额外功能。请随时提出问题或提交改进的PR。谢谢。🙇




