rancoud / pagination
分页包
3.1.9
2024-09-02 11:52 UTC
Requires
- php: >=7.4.0
- ext-mbstring: *
- rancoud/security: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16 || ^3.0
- phpunit/phpunit: ^9.1 || ^10.0 || ^11.0
- squizlabs/php_codesniffer: ^3.5
README
生成HTML分页以提高可访问性。
依赖项
安全包:https://github.com/rancoud/Security
安装
composer require rancoud/pagination
如何使用它?
$currentPage = 1; $countElements = 10; $countElementPerPage = 5; $p = new Pagination(); $html = $p->generateHtml($currentPage, $countElements, $countElementPerPage); echo $html;
它将输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
词汇表
- 根 代表
<ul>
- 项 代表
<li>
- 链接 代表
<a>
分页构造函数
设置
可选参数
分页方法
通用命令
- generateHtml(currentPage: int, countElements: int, countElementPerPage: int): string
- generateData(currentPage: int, countElements: int, countElementPerPage: int): array
静态方法
- countPages(countElements: int, countElementPerPage: int): int
- locateItemInPage(countElementPerPage: int, indexItem: int): int
配置参数
URL
- url (string) (示例)
行为
- show_all_links (bool: false) (示例)
- use_previous (bool: false) (示例)
- always_use_previous (bool: false) (示例)
- use_next (bool: false) (示例)
- always_use_next (bool: false) (示例)
- use_dots (bool: false) (示例)
- count_pages_pair_limit (int: 0) (示例)
- count_pages_pair_adjacent (int: 2) (示例)
标签
- text_previous (string: 上一页) (示例)
- text_next (string: 下一页) (示例)
- text_dots (string: …) (示例)
- text_page (string: {{PAGE}}) (示例)
- aria_label_link (string: 跳转到页面 {{PAGE}}) (示例)
- aria_label_current_link (string: 当前页面,页面 {{PAGE}}) (示例)
- aria_label_nav (string: 分页) (示例)
- aria_label_previous (string: 上一页) (示例)
- aria_label_next (string: 下一页) (示例)
- thousands_separator (string) (示例)
HTML 标记
根
- root_tag (string: ul) (示例)
- root_attrs (string) (示例)
- use_nav (bool: true) (示例)
- nav_attrs (string) (示例)
项
- item_tag (string: li) (示例)
- item_attrs (字符串) (示例)
- item_attrs_current (字符串) (示例)
- item_previous_attrs (字符串) (示例)
- item_previous_attrs_disabled (字符串) (示例)
- item_next_attrs (字符串) (示例)
- item_next_attrs_disabled (字符串) (示例)
- item_dots_attrs (字符串) (示例)
链接
- link_tag (字符串: a) (示例)
- link_attrs (字符串) (示例)
- link_attrs_current (字符串) (示例)
- link_previous_attrs_disabled (字符串) (示例)
- link_next_attrs_disabled (字符串) (示例)
- dot_tag (字符串: span) (示例)
- dot_attrs (字符串) (示例)
缩进
- use_pretty_html (布尔值: true) (示例)
- html_tab_sequence (字符串: \t) (示例)
- html_initial_indentation (整数: 0) (示例)
安全
您必须自行清理这些参数
- nav_attrs
- root_attrs
- item_attrs
- item_attrs_current
- item_previous_attrs
- item_previous_attrs_disabled
- item_next_attrs
- item_next_attrs_disabled
- item_dots_attrs
- link_attrs
- link_attrs_current
- link_previous_attrs_disabled
- link_next_attrs_disabled
- dot_attrs
- html_tab_sequence
示例
url
在页面末尾附加页面
输入
$conf = [ 'url' => 'https://example.com/news/page/' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="https://example.com/news/page/2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'url' => 'https://example.com/news/page/{{PAGE}}/?date=desc' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="https://example.com/news/page/2/?date=desc" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面之后
输入
$conf = [ 'url' => '{{PAGE}}?date=desc' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2?date=desc" aria-label="Page 2">2</a> </li> </ul> </nav>
show_all_links
输入
$conf = [ 'show_all_links' => true ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li> <a href="4" aria-label="Page 4">4</a> </li> <li> <a href="5" aria-label="Page 5">5</a> </li> <li> <a href="6" aria-label="Page 6">6</a> </li> </ul> </nav>
use_previous
输入
$conf = [ 'use_previous' => true ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Previous page">Previous page</a> </li> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> </ul> </nav>
always_use_previous
如果没有上一页,则在链接标签上设置 aria-disabled=true
输入
$conf = [ 'always_use_previous' => true ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Previous page" aria-disabled="true">Previous page</a> </li> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
use_next
输入
$conf = [ 'use_next' => true ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="2" aria-label="Next page">Next page</a> </li> </ul> </nav>
always_use_next
如果没有下一页,则在链接标签上设置 aria-disabled=true
输入
$conf = [ 'always_use_next' => true ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> <li> <a href="#" aria-label="Next page" aria-disabled="true">Next page</a> </li> </ul> </nav>
use_dots
输入
$conf = [ 'use_dots' => true ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li aria-hidden="true"> <span>…</span> </li> </ul> </nav>
count_pages_pair_limit
输入
$conf = [ 'count_pages_pair_limit' => 1 ]; echo (new Pagination($conf))->generateHtml(5, 300, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li> <a href="4" aria-label="Page 4">4</a> </li> <li> <a href="#" aria-label="Page 5" aria-current="page">5</a> </li> <li> <a href="6" aria-label="Page 6">6</a> </li> <li> <a href="7" aria-label="Page 7">7</a> </li> <li> <a href="60" aria-label="Page 60">60</a> </li> </ul> </nav>
count_pages_pair_adjacent
输入
$conf = [ 'count_pages_pair_adjacent' => 1 ]; echo (new Pagination($conf))->generateHtml(5, 300, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="4" aria-label="Page 4">4</a> </li> <li> <a href="#" aria-label="Page 5" aria-current="page">5</a> </li> <li> <a href="6" aria-label="Page 6">6</a> </li> </ul> </nav>
count_pages_pair_adjacent + count_pages_pair_adjacent
count_pages_pair_limit 0 + count_pages_pair_adjacent 0
输入
$conf = [ 'count_pages_pair_limit' => 0, 'count_pages_pair_adjacent' => 0 ]; echo (new Pagination($conf))->generateHtml(5, 300, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 5" aria-current="page">5</a> </li> </ul> </nav>
count_pages_pair_limit 2 + count_pages_pair_adjacent 2
输入
$conf = [ 'count_pages_pair_limit' => 2, 'count_pages_pair_adjacent' => 2 ]; echo (new Pagination($conf))->generateHtml(5, 300, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li> <a href="4" aria-label="Page 4">4</a> </li> <li> <a href="#" aria-label="Page 5" aria-current="page">5</a> </li> <li> <a href="6" aria-label="Page 6">6</a> </li> <li> <a href="7" aria-label="Page 7">7</a> </li> <li> <a href="59" aria-label="Page 59">59</a> </li> <li> <a href="60" aria-label="Page 60">60</a> </li> </ul> </nav>
text_previous
输入
$conf = [ 'use_previous' => true, 'text_previous' => 'prev' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Previous page">prev</a> </li> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> </ul> </nav>
text_next
输入
$conf = [ 'use_next' => true, 'text_next' => 'next' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="2" aria-label="Next page">next</a> </li> </ul> </nav>
text_dots
输入
$conf = [ 'use_dots' => true, 'text_dots' => 'dots' ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li aria-hidden="true"> <span>dots</span> </li> </ul> </nav>
text_page
在页面末尾附加页面
输入
$conf = [ 'text_page' => 'yolo' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">yolo 1</a> </li> <li> <a href="2" aria-label="Page 2">yolo 2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'text_page' => 'yo {{PAGE}} lo' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">yo 1 lo</a> </li> <li> <a href="2" aria-label="Page 2">yo 2 lo</a> </li> </ul> </nav>
aria_label_link
输入
$conf = [ 'aria_label_link' => 'aria label link' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="aria label link">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式
输入
$conf = [ 'aria_label_link' => 'aria label link {{PAGE}}' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="aria label link 2">2</a> </li> </ul> </nav>
aria_label_current_link
输入
$conf = [ 'aria_label_current_link' => 'aria label current link' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="aria label current link" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'aria_label_current_link' => 'aria label current link {{PAGE}}' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="aria label current link 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
aria_label_nav
输入
$conf = [ 'aria_label_nav' => 'aria label nav' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="aria label nav"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
aria_label_previous
输入
$conf = [ 'use_previous' => true, 'aria_label_previous' => 'prev' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="prev">Previous page</a> </li> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> </ul> </nav>
aria_label_next
输入
$conf = [ 'use_next' => true, 'aria_label_next' => 'next' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="2" aria-label="next">Next page</a> </li> </ul> </nav>
thousands_separator
输入
$conf = [ 'thousands_separator' => ';', 'count_pages_pair_limit' => 1 ]; echo (new Pagination($conf))->generateHtml(1, 1000, 1);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li> <a href="1000" aria-label="Page 1000">1;000</a> </li> </ul> </nav>
root_tag
输入
$conf = [ 'root_tag' => 'root' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <root> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </root> </nav>
root_attrs
输入
$conf = [ 'root_attrs' => 'data-root="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul data-root="attrs"> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
use_nav
输入
$conf = [ 'use_nav' => false ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul>
nav_attrs
输入
$conf = [ 'nav_attrs' => 'data-item="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination" data-item="attrs"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
item_tag
输入
$conf = [ 'item_tag' => 'item' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <item> <a href="#" aria-label="Page 1" aria-current="page">1</a> </item> <item> <a href="2" aria-label="Page 2">2</a> </item> </ul> </nav>
item_attrs
输入
$conf = [ 'item_attrs' => 'data-item="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li data-item="attrs"> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'item_attrs' => 'data-item="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li data-item="attrs 2"> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
item_attrs_current
输入
$conf = [ 'item_attrs_current' => 'data-item-current="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-current="attrs"> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'item_attrs_current' => 'data-item-current="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-current="attrs 1"> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
item_previous_attrs
输入
$conf = [ 'use_previous' => true, 'item_previous_attrs' => 'data-item-previous="attrs"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-previous="attrs"> <a href="1" aria-label="Previous page">Previous page</a> </li> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'use_previous' => true, 'item_previous_attrs' => 'data-item-previous="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-previous="attrs 1"> <a href="1" aria-label="Previous page">Previous page</a> </li> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> </ul> </nav>
item_previous_attrs_disabled
输入
$conf = [ 'always_use_previous' => true, 'item_previous_attrs_disabled' => 'data-item-previous-disabled="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-previous-disabled="attrs"> <a href="#" aria-label="Previous page" aria-disabled="true">Previous page</a> </li> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'always_use_previous' => true, 'item_previous_attrs_disabled' => 'data-item-previous-disabled="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li data-item-previous-disabled="attrs 0"> <a href="#" aria-label="Previous page" aria-disabled="true">Previous page</a> </li> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
item_next_attrs
输入
$conf = [ 'use_next' => true, 'item_next_attrs' => 'data-item-next="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li data-item-next="attrs"> <a href="2" aria-label="Next page">Next page</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'use_next' => true, 'item_next_attrs' => 'data-item-next="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li data-item-next="attrs 2"> <a href="2" aria-label="Next page">Next page</a> </li> </ul> </nav>
item_next_attrs_disabled
输入
$conf = [ 'always_use_next' => true, 'item_next_attrs_disabled' => 'data-item-next-disabled="attrs"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> <li data-item-next-disabled="attrs"> <a href="#" aria-label="Next page" aria-disabled="true">Next page</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'always_use_next' => true, 'item_next_attrs_disabled' => 'data-item-next-disabled="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> <li data-item-next-disabled="attrs 2"> <a href="#" aria-label="Next page" aria-disabled="true">Next page</a> </li> </ul> </nav>
item_dots_attrs
输入
$conf = [ 'use_dots' => true, 'item_dots_attrs' => 'data-item-dots="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li data-item-dots="attrs" aria-hidden="true"> <span>…</span> </li> </ul> </nav>
link_tag
输入
$conf = [ 'link_tag' => 'link' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <link href="#" aria-label="Page 1" aria-current="page">1</link> </li> <li> <link href="2" aria-label="Page 2">2</link> </li> </ul> </nav>
link_attrs
输入
$conf = [ 'link_attrs' => 'data-link="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a data-link="attrs" href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'link_attrs' => 'data-link="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a data-link="attrs 2" href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
link_attrs_current
输入
$conf = [ 'link_attrs_current' => 'data-link-current="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a data-link-current="attrs" href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'link_attrs_current' => 'data-link-current="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a data-link-current="attrs 1" href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
link_previous_attrs_disabled
输入
$conf = [ 'always_use_previous' => true, 'link_previous_attrs_disabled' => 'data-item-next-disabled="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a data-item-next-disabled="attrs" href="#" aria-label="Previous page" aria-disabled="true">Previous page</a> </li> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'always_use_previous' => true, 'link_previous_attrs_disabled' => 'data-item-next-disabled="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a data-item-next-disabled="attrs 0" href="#" aria-label="Previous page" aria-disabled="true">Previous page</a> </li> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
link_next_attrs_disabled
输入
$conf = [ 'always_use_next' => true, 'link_next_attrs_disabled' => 'data-item-next-disabled="attrs"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> <li> <a data-item-next-disabled="attrs" href="#" aria-label="Next page" aria-disabled="true">Next page</a> </li> </ul> </nav>
使用 {{PAGE}} 模式替换页面
输入
$conf = [ 'always_use_next' => true, 'link_next_attrs_disabled' => 'data-item-next-disabled="attrs {{PAGE}}"' ]; echo (new Pagination($conf))->generateHtml(2, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="1" aria-label="Page 1">1</a> </li> <li> <a href="#" aria-label="Page 2" aria-current="page">2</a> </li> <li> <a data-item-next-disabled="attrs 2" href="#" aria-label="Next page" aria-disabled="true">Next page</a> </li> </ul> </nav>
dot_tag
输入
$conf = [ 'use_dots' => true, 'dot_tag' => 'p' ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li aria-hidden="true"> <p>…</p> </li> </ul> </nav>
dot_attrs
输入
$conf = [ 'use_dots' => true, 'dot_attrs' => 'data-dot="attrs"' ]; echo (new Pagination($conf))->generateHtml(1, 30, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> <li> <a href="3" aria-label="Page 3">3</a> </li> <li aria-hidden="true"> <span data-dot="attrs">…</span> </li> </ul> </nav>
use_pretty_html
输入
$conf = [ 'use_pretty_html' => false ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"><ul><li><a href="#" aria-label="Page 1" aria-current="page">1</a></li><li><a href="2" aria-label="Page 2">2</a></li></ul></nav>
html_tab_sequence
输入
$conf = [ 'html_tab_sequence' => '' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
html_initial_indentation
输入
$conf = [ 'html_initial_indentation' => 1 ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
esc_attr
输入
$conf = [ 'esc_attr' => false ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
esc_html
输入
$conf = [ 'esc_html' => false, 'text_page' => '<em>{{PAGE}}</em>' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page"><em>1</em></a> </li> <li> <a href="2" aria-label="Page 2"><em>2</em></a> </li> </ul> </nav>
charset
输入
$conf = [ 'charset' => 'EUC-JP' ]; echo (new Pagination($conf))->generateHtml(1, 10, 5);
输出
<nav aria-label="Pagination"> <ul> <li> <a href="#" aria-label="Page 1" aria-current="page">1</a> </li> <li> <a href="2" aria-label="Page 2">2</a> </li> </ul> </nav>
generateData 输出
$conf = [ 'always_use_previous' => true, 'always_use_next' => true, 'use_dots' => true, ] var_dump(new Pagination($conf))->generateData(1, 3000, 5); array (size=3) 'previous' => object(Rancoud\Pagination\Item)[2] public 'ariaLabel' => string 'Previous page' (length=18) public 'href' => string '#' (length=6) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string 'Previous page' (length=13) public 'isCurrent' => boolean false public 'isDots' => boolean false public 'isDisabled' => boolean true public 'page' => int 0 'links' => array (size=4) 0 => object(Rancoud\Pagination\Item)[4] public 'ariaLabel' => string 'Page 1' (length=11) public 'href' => string '#' (length=6) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string '1' (length=1) public 'isCurrent' => boolean true public 'isDots' => boolean false public 'isDisabled' => boolean false public 'page' => int 1 1 => object(Rancoud\Pagination\Item)[5] public 'ariaLabel' => string 'Page 2' (length=11) public 'href' => string '2' (length=1) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string '2' (length=1) public 'isCurrent' => boolean false public 'isDots' => boolean false public 'isDisabled' => boolean false public 'page' => int 2 2 => object(Rancoud\Pagination\Item)[6] public 'ariaLabel' => string 'Page 3' (length=11) public 'href' => string '3' (length=1) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string '3' (length=1) public 'isCurrent' => boolean false public 'isDots' => boolean false public 'isDisabled' => boolean false public 'page' => int 3 3 => object(Rancoud\Pagination\Item)[7] public 'ariaLabel' => string 'Page 4' (length=11) public 'href' => string '4' (length=1) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string '…' (length=3) public 'isCurrent' => boolean false public 'isDots' => boolean true public 'isDisabled' => boolean false public 'page' => int 4 'next' => object(Rancoud\Pagination\Item)[8] public 'ariaLabel' => string 'Next page' (length=14) public 'href' => string '2' (length=1) public 'itemAttrs' => string '' (length=0) public 'linkAttrs' => string '' (length=0) public 'text' => string 'Next page' (length=9) public 'isCurrent' => boolean false public 'isDots' => boolean false public 'isDisabled' => boolean false public 'page' => int 2
如何开发
composer ci
用于 php-cs-fixer 和 phpunit 以及覆盖率
composer lint
用于 php-cs-fixer
composer test
用于 phpunit 和覆盖率