Pagination library without dependencies.
It's recommended to use the dependency manager
Composer
to install rayne/pagination.
composer require rayne/pagination-
Implementation of the Search Pagination Pattern defined by Yahoo
-
One or zero indexed pages
-
Extracts safe page numbers from arbitrary user inputs, e.g. first or last page on invalid input or when being out of bounds
-
-
Implementation of the Filter Pagination Pattern defined by Yahoo
(This pattern is currently not officially supported but the code is ready for playing around)
-
No dependencies (except the ones for testing)
-
Framework-agnostic
-
No markup (but Bootstrap examples in
/examples) -
No template engine (but Twig examples in
/examples) -
No database backend (but offset and limit provided)
-
No URL builder
-
-
Retrieve item count
$totalItems -
Let
Rayne\Paginationcalculate the offset$pagination = new SearchPagination( $totalItems, $itemsPerPage, $currentPage, $pagePadding = 4, $isZeroBased = false );
-
Verify
$currentPagewith$pagination->isOnValidPage()or retrieve the requested items with the help of$pagination->getItemOffset()and$pagination->getItemLimit() -
Render results and controls with the help of
$paginationor$pagination->toArray()and the example templates in the/examplesdirectory
Read the Examples section for examples and ideas.
Instead of creating the SearchPaginationInterface implementation by hand
a configurable factory can be used to provide the pagination as a service.
-
Either create a new factory (useful when working with a DI system) …
$factory = new SearchPaginationFactory;
… or initialize/fetch the global one
$factory = SearchPaginationFactory::instance();
The defaults are: one-indexed pages,
20items per page and a page padding of4. -
Configure the factory (or skip this step)
$factory->setIsZeroBased(true); $factory->setItemsPerPage(25); $factory->setPagePadding(2);
-
Build a new
SearchPaginationobject$totalItems = 123; $currentPage = 2; $pagination = $factory->build($totalItems, $currentPage);
The filter pagination pattern is not officially supported but feel free to play around with the following classes:
Rayne\Pagination\Filter\FilterPage
Rayne\Pagination\Filter\FilterPages
Rayne\Pagination\Filter\FilterPaginationThe following examples are part of the /examples directory.
-
Complete example (
/examples/index.php) -
Simple (highlights current page) and advanced (highlights current page, hides redundant pagination controls) examples
-
PHP snippets (
/examples/PHP) -
Twig macros (
/examples/Twig)
-
-
The Twig macros are Bootstrap Framework compatible
-
Clone the repository
git clone https://github.com/rayne/pagination.git
-
Install the development dependencies
composer install --dev
-
Run the tests
composer test