PHPackages                             ericksonreyes/pagination - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ericksonreyes/pagination

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ericksonreyes/pagination
========================

Simple Pagination Class for PHP 8

v1.0.2(3y ago)24MITPHPPHP 8.1.\*

Since Dec 19Pushed 2y ago1 watchersCompare

[ Source](https://github.com/ericksonreyes/pagination)[ Packagist](https://packagist.org/packages/ericksonreyes/pagination)[ Docs](https://github.com/ericksonreyes/pagination)[ RSS](/packages/ericksonreyes-pagination/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (16)Versions (4)Used By (0)

Simple Pagination Class for PHP 8
=================================

[](#simple-pagination-class-for-php-8)

[![Code Coverage](https://github.com/ericksonreyes/pagination/raw/master/coverage_badge.svg)](https://github.com/ericksonreyes/pagination/raw/master/coverage_badge.svg)[![Build](https://github.com/ericksonreyes/pagination/actions/workflows/merge.yaml/badge.svg?branch=master)](https://github.com/ericksonreyes/pagination/actions/workflows/merge.yaml)

Nothing fancy. I just created a pagination class that I've been copy-pasting over and over again.

Installation
------------

[](#installation)

```
composer require ericksonreyes/pagination
```

### Example (Laravel)

[](#example-laravel)

Controller

```
namespace App\Http\Controllers;

use App\Repository\UserRepository;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller as BaseController;

class Users extends BaseController {

    private const DEFAULT_PAGE_SIZE = 35;

    public function index(Request $request, UserRepository $repository): Response {
        $page = (int) $request->get('page', 1);
        $size = (int) $request->get('size', self::DEFAULT_PAGE_SIZE);

        if ($page < 1) {
            $page = 1;
        }

        if ($size < 1) {
            $size = self::DEFAULT_PAGE_SIZE;
        }

        $offset = $page - 1;
        $limit = $size;
        $count = $repository->countUsers();
        $data['users'] = $repository->getUsers($offset, $limit);

        $data['pagination'] = new Pagination(
            recordsFound: $count,
            recordsPerPage: 10,
            currentPage: $page
        );

        return response()->view('list', $data);
    }

}
```

View (Blade Templating)

```
@if(isset($pagination) && $pagination->hasPages())

        @if($pagination->hasPreviousPage())

                    Previous

        @endif

        @if($pagination->hasFirstPage())

                    {{ $pagination->firstPage() }}

            ...
        @endif

        @foreach($pagination->pages() as $page)
            @if($pagination->currentPage() === $page)
                {{ $page }}
            @else

                        {{ $page }}

            @endif
        @endforeach

        @if($pagination->hasLastPage())
            ...

                    {{ $pagination->lastPage() }}

        @endif

        @if($pagination->hasNextPage())

                    Next

        @endif

@endif
```

View (Vanilla PHP)

```
