Pagination
Introduction
Le paginateur de Laravel est intégré au générateur de requêtes et à l’ORM
Eloquent et fournit une pagination pratique et facile sans aucune configuration.
Par défaut, le code HTML généré par le paginateur est compatible avec le
framework CSS Tailwind ; cependant, la prise en charge de la pagination via
Bootstrap est également disponible.
La méthode paginate :
Il existe plusieurs façons de paginer les éléments. Le plus simple consiste à
utiliser la méthode paginate sur le générateur de requêtes ou une requête
Eloquent.
La méthode de pagination prend automatiquement en charge la définition de la
"limite" et du "décalage" (utilise limit et offset) de la requête en fonction de la
page actuelle consultée par l'utilisateur. Par défaut, la page actuelle est détectée
par la valeur de l'argument de chaîne de requête de page sur la requête HTTP.
Cette valeur est automatiquement détectée par Laravel, et est également
automatiquement insérée dans les liens générés par le paginateur.
Dans cet exemple, le seul argument passé à la méthode paginate est le nombre
d'éléments que vous souhaitez afficher "par page". Dans ce cas précisons que
nous souhaitons afficher 10 éléments par page :
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
class ModuleController extends Controller
{
public function index()
{
return view('readData', [
'modules' => DB::table('module')->paginate(10)
]);
}
}
Cours Proposé par : ELGARRAI Zineb
Remarque :
La méthode paginate compte le nombre total d'enregistrements correspondant à la
requête avant de récupérer les enregistrements de la base de données. Ceci est fait
pour que le paginateur sache combien de pages d'enregistrements il y a au total.
Toutefois, si vous ne prévoyez pas d'afficher le nombre total de pages dans l'interface
utilisateur de votre application, la requête de nombre d'enregistrements n'est pas
nécessaire. Par conséquent, si vous n'avez besoin d'afficher que des liens "Suivant" et
"Précédent" simples dans l'interface utilisateur de votre application, vous pouvez
utiliser la méthode simplePaginate pour effectuer une seule requête efficace :
$users = DB::table('users')->simplePaginate(15);
Exercice : parmis les méthodes de pagination existantes, on trouve cursorPagination.
Rechercher comment l’utiliser et quelle est la différence entre paginate et
cursorPaginate.
Affichage des résultats de pagination :
Lors de l'appel de la méthode paginate, vous recevrez une instance de Illuminate\
Pagination\LengthAwarePaginator, tandis que l'appel de la méthode simplePaginate
renvoie une instance de Illuminate\Pagination\Paginator. Et, enfin, l'appel de la
méthode cursorPaginate renvoie une instance de Illuminate\Pagination\
CursorPaginator. Ces objets fournissent plusieurs méthodes qui décrivent le jeu de
résultats. En plus de ces méthodes d'assistance, les instances de paginateur sont des
itérateurs et peuvent être bouclées sous forme de tableau. Ainsi, une fois que vous
avez récupéré les résultats, vous pouvez afficher les résultats et afficher les liens de
page à l'aide de Blade :
<div class="container">
@foreach ($modules en tant que $m)
{{ $m->codeM }}
@endforeach
</div>
{{ $m->links() }}
La méthode links rendra les liens vers le reste des pages dans le jeu de résultats.
Chacun de ces liens contiendra déjà la variable de chaîne de requête de page
appropriée.
Personnalisation de la vue de pagination
Cours Proposé par : ELGARRAI Zineb
Laravel inclut des vues de pagination construites à l'aide de Bootstrap. Pour utiliser
ces vues au lieu des vues Tailwind par défaut, vous pouvez appeler les méthodes
useBootstrapFour ou useBootstrapFive du paginateur dans la méthode de démarrage
de votre classe App\Providers\AppServiceProvider :
use Illuminate\Pagination\Paginator;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrapFive();
//Paginator::useBootstrapFour();
}
TP :
Améliorer le résultat du tp précédent en ajoutant la
pagination (3 modules par page) :
Partie 1 :
Partie2 :
Cours Proposé par : ELGARRAI Zineb
Cours Proposé par : ELGARRAI Zineb