amamarul / laravel-paginator
Laravel Paginator for Collections or Arrays
Installs: 2 007
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
This package is not auto-updated.
Last update: 2024-12-21 21:58:01 UTC
README
Make the pagination for arrays or Collections
Installation
Composer require
$ composer require amamarul/laravel-paginator
Add Provider into config/app.php
Amamarul\Paginator\PaginatorServiceProvider::class,
Usage
In Controller
- Array
use Amamarul\Paginator\Paginator; use Illuminate\Http\Request; public function index(Request $request) { $currentPage = isset($request['page']) ? (int) $request['page'] : 1; $perPage = 1; $path = $request->path(); $items = array_map(function ($value) { return [ 'name' => 'User #' . $value, 'url' => '/user/' . $value, ]; }, range(1,1000)); $paginator = new Paginator($items); $paginator = $paginator->paginate($currentPage,$perPage, $path); return view('index')->with('paginator', $paginator); }
- Collection
use App\User; use Amamarul\Paginator\Paginator; use Illuminate\Http\Request; public function index(Request $request) { $currentPage = isset($request['page']) ? (int) $request['page'] : 1; $perPage = 1; $path = $request->path(); $items = User::with('profile')->get()->sortBy('profile.name'); $paginator = new Paginator($items); $paginator = $paginator->paginate($currentPage,$perPage, $path); return view('index')->with('paginator', $paginator); }
In Blade View (index.blade.php)
@foreach ($paginator->items() as $element) <a href="{!!$element['url']!!}"><h3>{!!$element['name']!!}</h3></a> @endforeach {!! $paginator->render() !!}
Customize Page Name
By default the url has page
name
http://127.0.0.1:8000/?page=3
If you´d like to change the page name yo must only add a fourth parameter with the name.
Like this
use App\User; use Amamarul\Paginator\Paginator; use Illuminate\Http\Request; public function index(Request $request) { $currentPage = isset($request[$pageName]) ? (int) $request[$pageName] : 1; $perPage = 1; $path = $request->path(); $pageName = 'custom-name'; $items = User::with('profile')->get()->sortBy('profile.name'); $paginator = new Paginator($items); $paginator = $paginator->paginate($currentPage,$perPage, $path, $pageName); return view('index')->with('paginator', $paginator); }
Feel free to send improvements
Created by Maru Amallo-amamarul