The popphp/pop-paginator component is a simple component that provides pagination in a few different forms.


Install it directly into your project:

composer require popphp/pop-paginator

Or, include it in your composer.json file:

    "require": {
        "popphp/pop-paginator": "^3.0.5",

Basic Use

Basic example of a list:

use Pop\Paginator\Range;

$paginator = new Range(42);
echo $paginator;

Which will produce this HTML:

<a href="/?page=2">2</a>
<a href="/?page=3">3</a>
<a href="/?page=4">4</a>
<a href="/?page=5">5</a>

And if you clicked on page 3, it would render:

<a href="/?page=1">1</a>
<a href="/?page=2">2</a>
<a href="/?page=4">4</a>
<a href="/?page=5">5</a>

Using Bookends for a Large Range

use Pop\Paginator\Range;

$paginator = new Range(4512);
echo $paginator;

If we go to page 12, it would render:

<a href="/?page=1">&laquo;</a>
<a href="/?page=10">&lsaquo;</a>
<a href="/?page=11">11</a>
<a href="/?page=13">13</a>
<a href="/?page=14">14</a>
<a href="/?page=15">15</a>
<a href="/?page=16">16</a>
<a href="/?page=17">17</a>
<a href="/?page=18">18</a>
<a href="/?page=19">19</a>
<a href="/?page=20">20</a>
<a href="/?page=21">&rsaquo;</a>
<a href="/?page=452">&raquo;</a>

As you can see, it renders the “bookends” to navigate to the next set of pages, the previous set, the beginning of the set or the end.

Using an Form Input Field

To have a cleaner way of displaying a large set of pages, you can use an input field within a form like this:

use Pop\Paginator\Form;
$paginator = new Form(558);
echo $paginator;

This will produce:

<a href="/?page=1">&laquo;</a>
<a href="/?page=13">&lsaquo;</a>
<form action="/" method="get">
    <div><input type="text" name="page" size="2" value="14" /> of 56</div>
<a href="/?page=15">&rsaquo;</a>
<a href="/?page=56">&raquo;</a>

So instead of a set a links in between the bookends, there is a form input field that will allow the user to input a specific page to jump to.

Other Options

You can set many options to tailor the paginator’s look and functionality:

  • Number of items per page
  • Range of the page sets
  • Separator between the page links
  • Classes for the on/off page links
  • Bookend characters (start, previous, next, end)