salernolabs / pagination
一个简单的类,仅封装了一些分页功能,并构建bootstrap HTML
Requires (Dev)
- phpunit/phpunit: ^8.3
This package is auto-updated.
Last update: 2024-08-29 05:24:29 UTC
README
一个简单的库,封装了一些常见的分页功能,并可以构建bootstrap HTML。我知道有无数这样的库,但我将旧代码移入单独的测试库以进行组织,因为我将一些网站迁移到Symfony。我可能在某个时候添加更多格式化器,我也在尝试material ui,但尚未实现。欢迎PR。
安装
composer require salernolabs/pagination
如何使用
想法是构建一个分页对象(基本或格式化),输入一些值,获取所有分页信息以及所需的HTML。
基本分页类
构造函数接受几个可选参数。它们也可以通过set*方法设置。
$p = new \SalernoLabs\Pagination\Pagination(
$pageNumber,
$numberOfItemsPerPage,
$totalItems
);
使用 $p->getPaginationData()
获取所有计算出的分页数据;
PageData响应类
->getPaginationData()
方法将返回 PageData 响应对象。该对象上有以下方法
BootstrapHTML生成器
BootstrapHTML 格式化器对象扩展了基本分页类,并为包含 Bootstrap 库的网站提供了生成适合原始输出的额外HTML的功能。
->generateOutput($paginationUrl, $pageNumberConstant, $additionalUrlData)
此方法将使用输入参数格式化URL以生成输出。如果您的分页URL格式为 /news/1
对于第一页,/news/2
等,则第一个参数应为 '/news/#'
。
如果您的URL格式更类似于 '/articles/index?pageNumber=44'
,则可以这样做 '/articles/index?pageNumber=#'
如果需要更改URL模板中的 #
值,第二个参数可以更改它。
最后,第三个参数仅向URL末尾添加额外内容。
使用示例
$articleCount = /* query article count */ 500;
$pagination = new \SalernoLabs\Pagination\Formatter\BootstrapHTML();
$pagination
->setPageNumber(1)
->setNumberOfItemsPerPage(20)
->setTotalItems($articleCount);
$page = $pagination->getPaginationData();
// eg. LIMIT $page->getOffset(), $page->getItemsPerPage()
$paginationHTML = $pagination->generateOutput('/news/#', '#');
此时,您应该有需要的HTML输出。
自定义HTML
格式化器中有一些额外的方法可以调整HTML输出。它们如下
测试
测试仅使用PHPunit。如果您已加载composer开发依赖项,可以提供覆盖率报告的示例构建。
php vendor/phpunit/phpunit/phpunit --coverage-html build/coverage-report
我们旨在在版本1.#中实现100%的覆盖率。