meta data for this page
  •  

Laravel

Pagination manuelle

Dans certains cas, on peut configurer la pagination quand on a les résultats d'un requêtes dans un tableau.

Ici on a un tableau $images qui contient plusieurs images mais on souhaite les afficher 6 par 6.

use Illuminate\Pagination\LengthAwarePaginator as Paginator;
...

$pageStart = request()->get('page', 1); // récupère le numéro de page dans l'url
$perPage = 6; // Défini le nombre d'image par page

// Défini le décalage, si on est sur la 1ere page, $offset = 0
//si on est sur la 2eme page, $offset = 6
$offset = ($pageStart * $perPage) - $perPage; 

// Instancie la class Paginator
$images = new Paginator(
    array_slice($images->all(), $offset,  $perPage, true),
    $images->count(),
    $perPage,
    null, 
    [
        'path'  => $request->url(),
        'query' => $request->query(),
    ]
);

// Ajoute à l'objet $images le contenu de la recherche 
// si on est sur une page de résultats de recherche
$images->appends(['search' => $request->post('search')]);