Recherche…


Pagination à Laravel

Dans d'autres cadres, la pagination est un mal de tête. Laravel le rend facile, il peut générer de la pagination en ajoutant quelques lignes de code dans Controller et View.

Utilisation de base

Il existe plusieurs façons de paginer des éléments, mais le plus simple consiste à utiliser la méthode paginate sur le générateur de requêtes ou une requête Eloquent . Laravel out of the box prend en charge la définition des limites et des décalages en fonction de la page en cours d'affichage par l'utilisateur. Par défaut, la page en cours est détectée par la valeur de l'argument de chaîne de requête? Page sur la requête HTTP. Et bien sûr, Laravel détecte automatiquement cette valeur et l'insère dans les liens générés par le paginateur.

Maintenant, disons que nous voulons appeler la méthode paginate sur la requête. Dans notre exemple, l'argument passé à paginer est le nombre d'éléments que vous souhaitez afficher "par page". Dans notre cas, disons que nous voulons afficher 10 éléments par page.

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(10);

        return view('user.index', ['users' => $users]);
    }
}

Remarque: Actuellement, les opérations de pagination utilisant une instruction groupBy ne peuvent pas être exécutées efficacement par Laravel. Si vous avez besoin d'utiliser un groupBy avec un jeu de résultats paginé, il est recommandé d'interroger la base de données et de créer un paginateur manuellement.

Pagination simple

Disons que vous voulez simplement afficher les liens Suivant et Précédent sur votre vue de pagination. Laravel vous fournit cette option en utilisant la méthode simplePaginate .

$users = DB::table('users')->simplePaginate(10);

Affichage des résultats dans une vue

Maintenant, permet d'afficher la pagination en vue. En fait , lorsque vous appelez la paginate ou simplePaginate méthodes sur requête Eloquent, vous recevez une instance paginator. Lorsque la méthode paginate est appelée, vous recevez une instance de Illuminate\Pagination\LengthAwarePaginator , tandis que lorsque vous appelez la méthode simplePaginate , vous recevez une instance de Illuminate\Pagination\Paginator . Ces instances / objets sont livrés avec plusieurs méthodes expliquant le jeu de résultats. De plus, en plus de ces méthodes d’aide, les instances de paginateur sont des itérateurs et peuvent être mises en boucle sous forme de tableau.

Une fois que vous avez reçu les résultats, vous pouvez facilement rendre les liens de la page à l'aide de la lame.

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

La méthode des links rendra automatiquement les liens vers les autres pages du jeu de résultats. Chacun de ces liens contiendra le numéro de page spécifique, à savoir la variable de chaîne de requête de ?page . Le HTML généré par la méthode links est parfaitement compatible avec le framework CSS Bootstrap.

Modification des vues de pagination

Lorsque vous utilisez la pagination laravel, vous êtes libre d'utiliser vos propres vues personnalisées. Ainsi, lorsque vous appelez la méthode links sur une instance de paginateur, transmettez le nom de la vue comme premier argument à la méthode, comme:

{{ $paginator->links('view.name') }}

ou

Vous pouvez personnaliser les vues de pagination en les exportant dans votre répertoire resources/views/vendor à l'aide de la commande vendor: publish:

php artisan vendor:publish --tag=laravel-pagination

Cette commande place les vues dans le répertoire resources/views/vendor/pagination . Le fichier default.blade.php dans ce répertoire correspond à la vue de pagination par défaut. Editez ce fichier pour modifier le code HTML de la pagination.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow