在实际的项目开发过程中,分页是我们经常需要做的一个工作,那么今天雅腾教育介绍轻量级PHP分页组件之Paginator的使用;Paginator是一个非常轻量小巧的PHP分页组件。当我们数据比较多的时候,需要使用分页来方便浏览,Paginator可以时页面中优雅的显示分页条,显示首页和尾页以及中间几页,多出的页数使用三点代替,符合我们预期,此外也可以试用移动端。
安装
使用composer安装,如果还不会composer请参考:http://www.phpcomposer.com/
composer require "jasongrimes/paginator:~1.0"
基本使用
安装好了,直接引入,设置几个参数即可渲染网页。注意这里我们使用了bootstrap样式。
<?php require '../vendor/autoload.php'; use JasonGrimes\Paginator; $totalItems = 1000; //总页数 $itemsPerPage = 50; // 每页显示数 $currentPage = 8; // 当前所在页数 $urlPattern = '/foo/page/(:num)'; // 定义跳转地址 $paginator = new Paginator($totalItems, $itemsPerPage, $currentPage, $urlPattern); ?> <html> <head> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> </head> <body> <?php echo $paginator; ?> </body> </html>
使用浏览器你会看到这个效果:
是不是很漂亮,查看网页生成的源代码会发现:
<ul class="pagination"> <li><a href="/foo/page/7">« Previous</a></li> <li><a href="/foo/page/1">1</a></li> <li class="disabled"><span>...</span></li> <li><a href="/foo/page/5">5</a></li> <li><a href="/foo/page/6">6</a></li> <li><a href="/foo/page/7">7</a></li> <li class="active"><a href="/foo/page/8">8</a></li> <li><a href="/foo/page/9">9</a></li> <li><a href="/foo/page/10">10</a></li> <li><a href="/foo/page/11">11</a></li> <li><a href="/foo/page/12">12</a></li> <li class="disabled"><span>...</span></li> <li><a href="/foo/page/20">20</a></li> <li><a href="/foo/page/9">Next »</a></li> </ul>
所以,我们可以根据项目需求自定义CSS样式来改变分页条的外观,但bootstrap的风格已经挺好了。
自定义分页
我们可以使用$paginator->getPages(), $paginator->getNextUrl(), 以及$paginator->getPrevUrl()来更好的控制HTML输出。
<?php $html = '<ul class="pagination">'; if ($paginator->getPrevUrl()) { $html .= '<li><a href="' . $paginator->getPrevUrl() . '">« 上一页</a></li>'; } foreach ($paginator->getPages() as $page) { if ($page['url']) { $html .= '<li' . ($page['isCurrent'] ? ' class="active"' : '') . '><a href="' . $page['url'] . '">' . $page['num'] . '</a></li>'; } else { $html .= '<li class="disabled"><span>' . $page['num'] . '</span></li>'; } } if ($paginator->getNextUrl()) { $html .= '<li><a href="' . $paginator->getNextUrl() . '">下一页 »</a></li>'; } $html .= '</ul>'; echo $html; ?>
如果是在移动端应用,可以将数字分页收起来,换成下拉选取分页的方式,节省空间也方便操作,具体代码请查看本文演示DEMO。
Paginator项目在Github上的地址是:https://github.com/jasongrimes/php-paginator。