tianhe1986 / fatpagination
A simple php pagination library
1.0.0
2018-02-11 09:07 UTC
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: >=4.8.0
This package is auto-updated.
Last update: 2025-02-26 21:21:39 UTC
README
确保PHP版本在5.5以上。
推荐通过Composer进行安装
Composer的安装请参考官方配置。
安装好Composer后,在你的项目中创建一个 composer.json 文件:
{ "require": { "tianhe1986/fatpagination": "*" } }
然后在项目文件夹下执行:
$ composer install
之后添加autoloader:
<?php require "vendor/autoload.php";
分页处理
简单的用法示例如下:
use FatPagination\FatPagination; $params = [ 'totalNum' => 101, 'pageSize' => 10, 'currentPage' => 3, 'url' => '/test/page', ]; $pagination = new FatPagination($params); $ulHtml = $pagination->getUlHtml(); $divHtml = $pagination->getDivHtml();
则$urlHtml
对应如下html代码:
<ul> <li><a href="/test/page?page=1">首页</a></li> <li><a href="/test/page?page=2">上一页</a></li> <li><a href="/test/page?page=1">1</a></li> <li><a href="/test/page?page=2">2</a></li> <li class="active"><a href="/test/page?page=3">3</a></li> <li><a href="/test/page?page=4">4</a></li> <li><a href="/test/page?page=5">5</a></li> <li><a href="/test/page?page=6">6</a></li> <li><a href="/test/page?page=4">下一页</a></li> <li><a href="/test/page?page=11">末页</a></li> </ul>
$divHtml
对应如下html代码:
<div> <a href="/test/page?page=1">首页</a> <a href="/test/page?page=2">上一页</a> <a href="/test/page?page=1">1</a> <a href="/test/page?page=2">2</a> <a href="/test/page?page=3" class="active">3</a> <a href="/test/page?page=4">4</a> <a href="/test/page?page=5">5</a> <a href="/test/page?page=6">6</a> <a href="/test/page?page=4">下一页</a> <a href="/test/page?page=11">末页</a> </div>
默认情况下,会使用page
作为分页的参数,当前页码会加上class="active",当前页左右最多各展示3个数字页码。可以通过传入参数更改这些配置,具体的参数列表见下一小节。
传入参数
所有支持的参数列表如下:
参数名 | 说明 |
---|---|
pageParam | 分页的参数名,默认为 page |
url | 分页的url,不设置的话默认为当前url,会自动去除query_string中的分页参数部分 |
totalNum | 数据总条数 |
pageSize | 每页数据展示条数,默认为10 |
currentPage | 当前页码,默认为1 |
sidePageNum | 当前页码左右两边最多展示多少个数字页码。以设置为2举例, 当前页码为1,则展示 1 2 3,如果当前页码为2,则展示 1 2 3 4, 为3则展示 1 2 3 4 5 |
prevPageText | 上一页链接展示文本, 默认为“上一页” |
nextPageText | 下一页链接展示文本, 默认为“下一页” |
firstPageText | 首页链接展示文本, 默认为“首页” |
lastPageText | 末页链接展示文本, 默认为“末页” |
attrs | 数组,给标签附加的额外属性,具体参数见下表 |
所有attrs参数列表如下:
参数名 | 说明 |
---|---|
div | div标签附加属性,仅生成div列表时有效 |
ul | ul标签附加属性,仅生成ul列表时有效 |
a | 非当前数字页码a标签附加属性,仅div列表有效 |
li | 非当前数字页码li标签附加属性,仅ul列表有效 |
currentPage | 当前数字页码附加属性,div列表附加在a标签上,ul列表附加在li标签上。 默认会附加 class="active" |
prevPage | 上一页附加属性,div列表附加在a标签上,ul列表附加在li标签上 |
nextPage | 下一页附加属性,div列表附加在a标签上,ul列表附加在li标签上 |
firstPage | 首页附加属性,div列表附加在a标签上,ul列表附加在li标签上 |
lastPage | 末页附加属性,div列表附加在a标签上,ul列表附加在li标签上 |
以下是包含全部参数的ul列表生成示例:
use FatPagination\FatPagination; $params = [ 'pageParam' => 'p', 'url' => '/order/list?type=1', 'totalNum' => 432, 'pageSize' => 15, 'currentPage' => 6, 'sidePageNum' => 2, 'prevPageText' => 'prev', 'nextPageText' => 'next', 'firstPageText' => 'first', 'lastPageText' => 'last', 'attrs' => [ 'ul' => 'class="page-ul"', 'li' => 'class="page-li"', 'currentPage' => 'class="page-li current"', 'prevPage' => 'class="prev"', 'nextPage' => 'class="next"', 'firstPage' => 'class="first"', 'lastPage' => 'class="last"', ] ]; $pagination = new FatPagination($params); $ulHtml = $pagination->getUlHtml();
将生成
<ul class="page-ul"> <li class="first"><a href="/order/list?type=1&p=1">first</a></li> <li class="prev"><a href="/order/list?type=1&p=5">prev</a></li> <li class="page-li"><a href="/order/list?type=1&p=4">4</a></li> <li class="page-li"><a href="/order/list?type=1&p=5">5</a></li> <li class="page-li current"><a href="/order/list?type=1&p=6">6</a></li> <li class="page-li"><a href="/order/list?type=1&p=7">7</a></li> <li class="page-li"><a href="/order/list?type=1&p=8">8</a></li> <li class="next"><a href="/order/list?type=1&p=7">next</a></li> <li class="last"><a href="/order/list?type=1&p=29">last</a></li> </ul>
div列表生成示例:
use FatPagination\FatPagination; $params = [ 'pageParam' => 'p', 'url' => '/order/list?type=1', 'totalNum' => 432, 'pageSize' => 15, 'currentPage' => 6, 'sidePageNum' => 2, 'prevPageText' => 'prev', 'nextPageText' => 'next', 'firstPageText' => 'first', 'lastPageText' => 'last', 'attrs' => [ 'div' => 'class="page-div"', 'a' => 'class="page-a"', 'currentPage' => 'class="page-a current"', 'prevPage' => 'class="prev"', 'nextPage' => 'class="next"', 'firstPage' => 'class="first"', 'lastPage' => 'class="last"', ] ]; $pagination = new FatPagination($params); $divHtml = $pagination->getDivHtml();
将生成
<div class="page-div"> <a href="/order/list?type=1&p=1" class="first">first</a> <a href="/order/list?type=1&p=5" class="prev">prev</a> <a href="/order/list?type=1&p=4" class="page-a">4</a> <a href="/order/list?type=1&p=5" class="page-a">5</a> <a href="/order/list?type=1&p=6" class="page-a current">6</a> <a href="/order/list?type=1&p=7" class="page-a">7</a> <a href="/order/list?type=1&p=8" class="page-a">8</a> <a href="/order/list?type=1&p=7" class="next">next</a> <a href="/order/list?type=1&p=29" class="last">last</a> </div>
自行构造分页html
如果提供的参数依旧不能满足需要,可以按照如下方式,获取首/末页,上/下一页,以及数字页码,然后自行拼接html:
use FatPagination\FatPagination; $params = [ 'totalNum' => 101, 'pageSize' => 10, 'currentPage' => 3, 'url' => '/test/page', ]; $pagination = new FatPagination($params); $html = '<ul>'; //首页 $html .= '<li><a class="XXX" href="'.$pagination->getFirstUrl().'">首页</a></li>'; //上一页 $prevUrl = $pagination->getPrevUrl(); if ($prevUrl) { $html .= '<li><a class="XXX" href="'.$prevUrl.'">上一页</a></li>'; } //数字页 $pages = $pagination->getPages(); foreach ($pages as $pageItem) { if (! $pageItem['current']) { //不是当前页 $html .= '<li><a class="XXX" href="'.$pageItem['url'].'">第'.$pageItem['page'].'页</a></li>'; } else { $html .= '<li>第'.$pageItem['page'].'页</li>'; } } //下一页 $nextUrl = $pagination->getNextUrl(); if ($nextUrl) { $html .= '<li><a class="XXX" href="'.$nextUrl.'">下一页</a></li>'; } //末页 $html .= '<li><a class="XXX" href="'.$pagination->getLastUrl().'">末页</a></li>'; $html .= '</ul>';
则最终$html
为:
<ul> <li><a class="XXX" href="/test/page?page=1">首页</a></li> <li><a class="XXX" href="/test/page?page=2">上一页</a></li> <li><a class="XXX" href="/test/page?page=1">第1页</a></li> <li><a class="XXX" href="/test/page?page=2">第2页</a></li> <li>第3页</li> <li><a class="XXX" href="/test/page?page=4">第4页</a></li> <li><a class="XXX" href="/test/page?page=5">第5页</a></li> <li><a class="XXX" href="/test/page?page=6">第6页</a></li> <li><a class="XXX" href="/test/page?page=4">下一页</a></li> <li><a class="XXX" href="/test/page?page=11">末页</a></li> </ul>