pagination dans Laravel

Comment créer une pagination dans Laravel 8 avec Bootstrap 4

Partagez sur:

Dans ce tutoriel, je vais partager comment créer une pagination dans Laravel 8 avec bootstrap 4. Nous allons apprendre à construire une pagination simple dans l’application laravel 8 à partir de zéro.

Nous couvrirons la configuration d’une application laravel, la création de modèles et de migrations, la création d’un contrôleur et la connexion du contrôleur aux routes, et la récupération des enregistrements de la base de données et la liaison avec la méthode pagination() pour afficher les résultats dans des tailles plus petites à l’aide de paginate() et de links() fonction.

Nous nous concentrerons également sur la façon de configurer un chemin ou un paramètre personnalisé avec la pagination laravel.

 

LIRE AUSSI: Authentification basée sur les rôles dans Laravel

L’intégration de la pagination dans Laravel est très facile grâce au générateur de requêtes et à l’ORM Eloquent.

Il offre un moyen pratique et créatif d’afficher les résultats de la base de données en plus petits morceaux. La pagination fonctionne bien avec le framework CSS Bootstrap.

Création du projet Laravel

Exécutez la commande suivante pour créer un projet Laravel.

composer create-project laravel/laravel –prefer-dist laravel-pagination

Allez dans le répertoire du projet.

cd laravel-pagination

 

Configuration de la base de données

Vous devez avoir un serveur local configuré sur votre système de développement local et vous pouvez utiliser MAMP ou XAMPP. Ouvrez le fichier .env et ajoutez votre configuration de base de données pour établir la connexion entre Laravel et MySQL.

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=root
DB_PASSWORD=


 

SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = laravel_db and table_name = migrations and table_type = ‘BASE TABLE’)

 

Si vous rencontrez une erreur de migration comme ci-dessus et que vous utilisez MAMP, vous devez ajouter la ligne ci-dessous dans le fichier .env.

DB_HOST=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock

 

Modèle et migrations

La pagination est utilisée pour afficher la grande quantité de données en morceaux de pages, nous devons donc créer un modèle qui prend en charge la logique métier de notre application Laravel. Un modèle fait référence à la structure logique de la table de données dans notre base de données.

php artisan make:model Employee -m

 

Ouvrez le fichier database/migrations/timestamp_create_employees_table.php et ajoutez le schéma.

public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('firstname');
        $table->string('lastname');
        $table->string('email')->unique();
        $table->string('dob');
    });
}

 

Incluez le code suivant dans le fichier app/Models/Employee.php pour enregistrer le schéma dans le tableau $fillable.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    use HasFactory;
    protected $fillable = [
        'firstname',
        'lastname',
        'email',
        'dob',
    ];

}

 

Exécutez la commande suivante à partir de l’outil de ligne de commande pour la migration de la base de données.

php artisan migrate

 

Générer de fausses données à l’aide de Faker

Pour afficher la pagination dans Laravel, nous devons créer de fausses données afin de pouvoir diviser ces données en petits morceaux. Ainsi, pour générer de fausses données, nous utiliserons le package Laravel intégré, Faker.

Ouvrez le fichier database/seeds/DatabaseSeeder.php et placez le code suivant.

<?php

use Illuminate\Database\Seeder;

// Import DB and Faker services
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker::create();

    	foreach (range(1,500) as $index) {
            DB::table('employees')->insert([
                'firstname' => $faker->firstname,
                'lastname' => $faker->lastname,
                'email' => $faker->email,
                'dob' => $faker->date($format = 'D-m-y', $max = '2010',$min = '1980')
            ]);
        }
    }
}

 

Pour générer de fausses données aléatoires dans la base de données, déclarez les services DB et Faker en haut, exécutez une boucle foreach et définissez la plage de données que vous devez générer dans la base de données. Définissez le nom et le schéma de la table dans la fonction d’insertion de table.

 

Exécutez la commande donnée pour générer les données.

php artisan db:seed

Maintenant, vous pouvez vérifier votre table employees dans la base de données avec au moins 500 nouveaux enregistrements que vous pouvez utiliser pour la démo de pagination Laravel.

 

LIRE AUSSI: Déployer une application Laravel avec Capistrano

Créer un contrôleur et une route

Exécutez la commande pour créer le contrôleur des employés.

php artisan make:controller EmployeeController

Placez le code suivant dans le fichier app/Http/EmployeeController.php.

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Employee;

class EmployeeController extends Controller
{
    public function getData(){
      $employeeData = Employee::all();
      return view('home', compact('employeeData'));
    }
}

Créer une route

Accédez à routes/web.php pour inclure le code suivant pour définir la route et y lier le contrôleur.

use App\Http\Controllers\ EmployeeController;

Route::get('/', [EmployeeController::class, 'getData']);

 

Rendre les enregistrements dans la vue

Tout d’abord, créez un fichier blade resources/views/home.blade.php et placez le code suivant à l’intérieur pour afficher les enregistrements des employés dans la vue Laravel à l’aide du composant Bootstrap Table.

<!DOCTYPE html>
    <html>

    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Laravel Pagination Demo</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
    </head>

    <body>
        <div class="container mt-5">
            <table class="table table-bordered mb-5">
                <thead>
                    <tr class="table-success">
                        <th scope="col">#</th>
                        <th scope="col">First name</th>
                        <th scope="col">Last name</th>
                        <th scope="col">Email</th>
                        <th scope="col">DOB</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach($employees as $data)
                    <tr>
                        <th scope="row">{{ $data->id }}</th>
                        <td>{{ $data->firstname }}</td>
                        <td>{{ $data->lastname }}</td>
                        <td>{{ $data->email }}</td>
                        <td>{{ $data->dob }}</td>
                    </tr>
                    @endforeach
                </tbody>
            </table>
        </div>
    </body>
</html>

 

Utiliser la pagination dans Laravel

La pagination est un moyen de repartir des données étendues sur plusieurs pages, la pagination dans Laravel est très facile à utiliser ; il est intégré au générateur de requêtes et à Eloquent ORM. La pagination Laravel couvre la limite et le décalage automatiquement.

L’implémentation de la pagination dans laravel est fluide, ajoutez la fonction de pagination laravel dans la fonction getData() à l’intérieur de la classe EmployeeController. Supprimez all() et utilisez paginate() et il prend un nombre comme argument, ce nombre définit le nombre de résultats à afficher à l’utilisateur.

// app > http > controllers > EmployeeController.php

class EmployeeController extends Controller {

    public function getData(){
      $employees = Employee::paginate(8);
      return view('home', compact('employees'));
    }

}

 

Pour afficher le composant de pagination sur la vue, nous devons ajouter le code suivant dans le fichier home.blade.php sous le composant table. Étant donné que la pagination Laravel va bien avec Bootstrap 4, nous n’avons donc pas à nous soucier de l’interface utilisateur de pagination.

<div class="d-flex justify-content-center">

{!! $employees->links() !!}

</div>

Voici le fichier home.blade.php final.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Laravel Pagination Demo</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>

<body>
    <div class="container mt-5">
        <table class="table table-bordered mb-5">
            <thead>
                <tr class="table-success">
                    <th scope="col">#</th>
                    <th scope="col">First name</th>
                    <th scope="col">Last name</th>
                    <th scope="col">Email</th>
                    <th scope="col">DOB</th>
                </tr>
            </thead>
            <tbody>
                @foreach($employees as $data)
                <tr>
                    <th scope="row">{{ $data->id }}</th>
                    <td>{{ $data->firstname }}</td>
                    <td>{{ $data->lastname }}</td>
                    <td>{{ $data->email }}</td>
                    <td>{{ $data->dob }}</td>
                </tr>
                @endforeach
            </tbody>
        </table>

        {{-- Pagination --}}
        <div class="d-flex justify-content-center">
            {!! $employees->links() !!}
        </div>
    </div>
</body>

</html>

 

Paramètre de pagination personnalisée Laravel

Nous avons créé une pagination simple qui affiche plusieurs pages de résultats et crée une URL comme celle-ci. Fondamentalement, il ajoute une ?page=3.

Ajouter un paramètre à la pagination

Nous pouvons simplement ajouter le paramètre supplémentaire à l’url de pagination en utilisant simplement le code suivant.

{!! $employees->appends(['sort' => 'department'])->links() !!}

 

De plus, vous devez importer et définir useBootstrap() dans la fonction de démarrage dans app/Providers/AppServiceProvider.php :

<?php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;

use Illuminate\Pagination\Paginator;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Paginator::useBootstrap();
    }
}

 

Exécuter l’application Laravel

Exécutez la commande suivante pour démarrer le projet de démonstration de pagination Laravel.

php artisan serve

Vous vérifiez l’application sur http://127.0.0.1:8000

Conclusion

Enfin, nous avons terminé le tutoriel sur la pagination dans Laravel. Dans ce tutoriel, nous avons appris à travailler avec la pagination dans Laravel.

Nous avons appris à configurer des bases de données, à créer des modèles et des migrations, à créer de fausses données avec faker, à créer un contrôleur, un itinéraire et un fichier de vue, et surtout, nous avons appris à utiliser le composant de pagination dans laravel.

 

 


Partagez sur: