tianhe1986 / fatpagination
一个简单的PHP分页库
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: 2024-09-26 20:23:32 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个数字页码。可以通过传入参数更改这些配置,具体的参数列表见下一小节。
传入参数
所有支持的参数列表如下:
所有attrs参数列表如下:
以下是包含全部参数的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>