Maison  >  Article  >  cadre php  >  Comment implémenter la fonction de pagination à l'aide de Laravel

Comment implémenter la fonction de pagination à l'aide de Laravel

PHPz
PHPzoriginal
2023-04-19 10:09:142835parcourir

Laravel est un framework de développement PHP populaire qui fournit de nombreuses fonctionnalités modernes et des outils conviviaux pour le développement, permettant aux développeurs de créer des sites Web et des applications plus efficacement. Dans le processus de développement d'applications Web, il est souvent nécessaire d'afficher les résultats des requêtes dans des pages. Cet article explique comment utiliser Laravel pour implémenter la fonction de pagination.

1. Introduction à la pagination

La pagination fait référence à une méthode permettant de diviser une grande quantité de données en plusieurs pages à afficher. Normalement, nous définirons le nombre de données à afficher sur chaque page si la quantité de données dépasse ce nombre. valeur, la page se tournera automatiquement. Cette approche peut réduire considérablement le temps de chargement des pages et l'utilisation de la bande passante, permettant ainsi aux utilisateurs de visualiser et de parcourir plus facilement les données.

2. Opération de pagination Laravel

Laravel fournit la classe Paginator pour implémenter la fonction de pagination. Nous pouvons obtenir l'instance de pagination en passant l'objet résultat de la requête à la méthode make de Paginator et en spécifiant la quantité de données à afficher sur chaque page. Appelez la méthode render sur l'instance et Laravel peut générer automatiquement des liens de pagination.

Jetons un coup d'œil à l'implémentation spécifique du code.

  1. Installez Laravel

Exécutez la commande suivante pour installer Laravel :

composer create-project --prefer-dist laravel/laravel blog
  1. Créez une table de base de données Mysql

Créez des articles de table de base de données et insérez des exemples de données :

CREATE TABLE `articles` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `body` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 1', 'This is article 1 content', '2021-01-01 12:00:00', '2021-01-01 12:00:00');
INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 2', 'This is article 2 content', '2021-01-02 12:00:00', '2021-01-02 12:00:00');
INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 3', 'This is article 3 content', '2021-01-03 12:00:00', '2021-01-03 12:00:00');
INSERT INTO `articles` (`title`, `body`, `created_at`, `updated_at`) VALUES ('Article 4', 'This is article 4 content', '2021-01-04 12:00:00', '2021-01-04 12:00:00');
  1. Définissez le modèle d'article

dans l'application /Models Créez le fichier ArticlesController.php dans le répertoire app/Http/Controllers et ajoutez le code suivant :

<?php

namespace App\Models;

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

class Article extends Model
{
    use HasFactory;

    protected $fillable = [&#39;title&#39;, &#39;body&#39;];

    public function getDateAttribute()
    {
        return $this->created_at->format('Y-m-d');
    }
}
  1. Define ArticlesController

Créez le répertoire articles dans le répertoire resources/views, créez le index.blade.php fichier dans ce répertoire, et ajoutez le code suivant :
    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Models\Article;
    
    class ArticlesController extends Controller
    {
        public function index(Request $request)
        {
            $articles = Article::paginate(2);
            
            return view(&#39;articles.index&#39;, compact(&#39;articles&#39;));
        }
    }
  1. Analyse :

Tout d'abord, nous affichons chaque article dans une boucle foreach.

Utilisez les propriétés $article->title et $article->body pour obtenir le titre et le corps de l'article à partir du modèle Article.

    Obtenez la date de publication de l'article dans l'attribut $article->date.
  • Appelez la méthode $articles->links(), Laravel générera automatiquement des liens de pagination pour nous.
  • Définissez le style de la page
Créez le fichier app.css dans le répertoire public/css et ajoutez le code suivant :
    @extends('layouts.app')
    @section('content')
        <div class="container">
            <div class="row">
                <div class="col-md-8">
                    @foreach($articles as $article)
                        <div class="card mb-3">
                            <div class="card-header">
                                {{ $article->title }}
                            </div>
                            <div class="card-body">
                                <p class="card-text">{{ $article->body }}</p>
                            </div>
                            <div class="card-footer text-right">
                                <small class="text-muted">{{ $article->date }}</small>
                            </div>
                        </div>
                    @endforeach
                    {{ $articles->links() }}
                </div>
            </div>
        </div>
    @endsection
  1. Dans le fichier app.blade.php du répertoire resources/views/layouts, ajoutez le code suivant :
  2. .card {
        margin-bottom: 20px;
    }
    .pagination {
        margin-top: 20px;
    }
Analyse :

Ajout du style CSS Bootstrap4 à app.blade.php.

Nous avons également introduit les fichiers JS de Bootstrap 4, mais nous n'avons pas besoin de les introduire manuellement car Laravel est livré avec l'outil d'empaquetage Webpack, qui peut automatiquement empaqueter les fichiers JS requis dans le fichier public/js/app.js.

  • Testez la fonction de pagination
Visitez http://127.0.0.1:8000/articles et vous pourrez voir que notre liste d'articles a été affichée et que nous pouvons basculer entre plusieurs pages via des liens de pagination.
  1. Ce qu'il faut noter ici, c'est que lorsque nous appelons la méthode paginate dans le contrôleur, le paramètre 2 transmis représente le nombre de données à afficher sur la page. Si cette valeur est trop petite, il y en aura. beaucoup de liens de pagination sur la page, conduisant à une confusion de page ; si cette valeur est trop grande, la quantité de données affichées sur la page sera très importante, bloquant les requêtes pendant une longue période, affectant la vitesse d'ouverture de la page. , et même causer des problèmes tels qu'un débordement de mémoire, il doit donc être configuré avec soin en fonction de la situation réelle.
3. Résumé

Laravel fournit une classe Paginator puissante pour implémenter la fonction de pagination, qui peut être facilement implémentée avec moins de code. Cet article explique comment utiliser Paginator pour afficher les données de la base de données MySQL sous forme de pages. Nous avons également montré comment utiliser les propriétés du modèle dans les résultats paginés. Lorsque nous devons afficher de grandes quantités de données lors du développement de sites Web et d'applications, la pagination est une fonctionnalité essentielle. Elle peut non seulement améliorer considérablement l'expérience utilisateur, mais également réduire efficacement la surcharge du serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn