美文网首页
PHP分页组件:Paginator

PHP分页组件:Paginator

作者: 码农工号9527 | 来源:发表于2021-09-17 12:56 被阅读0次

使用composer安装

composer require "jasongrimes/paginator:~1.0"

使用

<?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>
    <!-- The default, built-in template supports the Twitter Bootstrap pagination styles. -->
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  </head>
  <body>

    <?php 
      // Example of rendering the pagination control with the built-in template.
      // See below for information about using other templates or custom rendering.

      echo $paginator; 
    ?>
    
  </body>
</html>

或者自定义显示格式

<?php if ($paginator->getNumPages() > 1): ?>
    <ul class="pagination">
        <?php if ($paginator->getPrevUrl()): ?>
            <li><a href="<?php echo $paginator->getPrevUrl(); ?>">&laquo; Previous</a></li>
        <?php endif; ?>

        <?php foreach ($paginator->getPages() as $page): ?>
            <?php if ($page['url']): ?>
                <li <?php echo $page['isCurrent'] ? 'class="active"' : ''; ?>>
                    <a href="<?php echo $page['url']; ?>"><?php echo $page['num']; ?></a>
                </li>
            <?php else: ?>
                <li class="disabled"><span><?php echo $page['num']; ?></span></li>
            <?php endif; ?>
        <?php endforeach; ?>

        <?php if ($paginator->getNextUrl()): ?>
            <li><a href="<?php echo $paginator->getNextUrl(); ?>">Next &raquo;</a></li>
        <?php endif; ?>
    </ul>
<?php endif; ?>

跳转页参数问题

$paginator = new Paginator($totalItems, $itemsPerPage, $currentPage, $urlPattern);

上述变量中$urlPattern格式一般为:'/foo/page/(:num)'
如果参数为多个,则可以通过拼接参数来生成$urlPattern,如下

    /**
     * 将url数组参数转为url字符串
     * @param array $params
     * @return string
     */
    private function buildUrlStr(array $params) :string
    {
        $str = '?';
        foreach ($params as $p_k =>$p_v) {
            if ($p_k == 'page') {
                // 'page'代表当前所在页
                $str .=  "$p_k=(:num)&";
            } else {
                $str .=  "$p_k=$p_v&";
            }
        }
        return $str;
    }

然后将$urlPattern中的(:num)替换为该方法,即'/foo/page/' . $this->buildUrlStr($params)
github地址

相关文章

  • PHP分页组件:Paginator

    使用composer安装 使用 或者自定义显示格式 跳转页参数问题 上述变量中$urlPattern格式一般为:'...

  • 【laravel:5.1】Pagination

    Paginator.php // 处理简单分页 LengthAwarePaginator.php // 处理复杂...

  • List取值

    model 分页查询 Paginator paginator = new Paginator(Role.class...

  • bootstrap-combined.min.css 与 boo

    使用bootstrap-paginator.js分页组件时,根据github上的demo,需要引入下列css: 但...

  • 2018-12-27

    分页器 Paginator 常见用法 实例练习:实现分页效果 template下的html views.py

  • 分页

    分页 分页库Paginator的基本语法 django提供了分页的工具,存在于django.core中 Pagin...

  • 2.8 django分页

    Paginator和Page类: Paginator和Page类都是用来做分页的。他们在Django中的路径为dj...

  • 第20天,分页器

    本篇写了使用Django自有的分页器paginator的用法和自定制分页器 1.1 Django之分页功能 Dj...

  • 分页(Pagination)功能的实现

    分页(Pagination) Paginator 使用 这是我们的自己定义的分页类, 我们必须要了解如何使用它。 ...

  • 分页器&批量插入数据&分页模板

    1. 分页器: 1.1 导入 ​ from django.core.paginator import Pagi...

网友评论

      本文标题:PHP分页组件:Paginator

      本文链接:https://www.haomeiwen.com/subject/gcwjgltx.html