salernolabs/pagination

一个简单的类,仅封装了一些分页功能,并构建bootstrap HTML

v1.1.0 2019-08-03 16:40 UTC

This package is auto-updated.

Last update: 2024-08-29 05:24:29 UTC


README

Latest Stable Version License Build Status

一个简单的库,封装了一些常见的分页功能,并可以构建bootstrap HTML。我知道有无数这样的库,但我将旧代码移入单独的测试库以进行组织,因为我将一些网站迁移到Symfony。我可能在某个时候添加更多格式化器,我也在尝试material ui,但尚未实现。欢迎PR。

Example Pagination Image

安装

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%的覆盖率。