Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. CodeIgniter
Code

Pagination dans CodeIgniter: Le guide complet

by
Difficulty:BeginnerLength:LongLanguages:

French (Français) translation by Soleil (you can also view the original English article)

L'avantage d'utiliser tout framework d'application Web à pile complète est que vous n'avez pas à vous soucier des tâches courantes telles que le traitement des entrées, la validation de formulaire, etc., car le framework fournit déjà des wrappers pour ces fonctionnalités. Ainsi, cela vous permet de vous concentrer sur la logique métier de l'application plutôt que de réinventer la roue encore et encore.

Aujourd'hui, nous allons explorer une bibliothèque importante dans le framework CodeIgniter, la bibliothèque de pagination.

Permettez-moi de souligner les sujets que nous allons couvrir au cours de cet article:

  • Démonstration de la pagination de base
  • Explorez les options de personnalisation
  • Configuration de la pagination

Démonstration de la pagination de base

Dans cette section, nous allons passer à un exemple qui montre l'utilisation de la pagination dans CodeIgniter. C'est la meilleure façon de comprendre comment les choses fonctionnent.

Dans notre exemple, nous allons construire une liste d'utilisateurs assez simple dans laquelle nous allons récupérer les enregistrements de la table MySQL des utilisateurs. Pour que cet exemple soit exécuté avec succès, assurez-vous de disposer des champs uid et uname dans votre table users.

Avec cette mise en place, nous sommes prêts à rouler.

Allez-y et créez un fichier contrôleurs controllers/Paging.php avec le contenu suivant.

Ensuite, nous aurons besoin d’un fichier de modèle models/Users.php qui récupère les enregistrements de la table users.

Enfin, créons un fichier view à views/user_listing.php qui affiche la liste des utilisateurs.

Maintenant, allez-y et accédez à notre page personnalisée à l'adresse http://votre-site-code-allumeur/paging/index et vous devriez voir la liste des utilisateurs avec la pagination! Alors ça y est, on l'a fait! Ne vous inquiétez pas, je ne vous quitterai pas de si tôt, car nous allons maintenant disséquer chaque partie du code.

Nous allons commencer avec le fichier de modèle models/Users.php, car cela s'appelle quelque chose à partir de nos méthodes de contrôleur. Il existe deux méthodes importantes, get_current_page_records et get_total, que notre modèle implémente afin de générer les liens de pagination.

Passons à la méthode get_total. Il est utilisé pour compter le nombre d'enregistrements dans la table des utilisateurs.

Ensuite, il y a une méthode get_current_page_records.

Vous devez noter deux arguments importants dans la méthode get_current_page_records. Le premier argument, $limit, est utilisé pour spécifier le nombre d'enregistrements qui seront renvoyés lors de l'exécution de la requête. Et le deuxième argument, $start, agit comme index de départ de l'enregistrement.

Donc, comme vous pouvez le constater, étant donné les valeurs de $start et $limit, nous pouvons récupérer les enregistrements par page. C’est l’essence même de la pagination, et entre temps, nous avons mis en œuvre la méthode la plus importante de cet article!

C'était donc notre modèle, simple et élégant!

Pour aller de l’avant, reportons notre attention sur le fichier du contrôleur. Allez-y et récupérez le code de la méthode constructeur.

Pour pouvoir utiliser la pagination dans CodeIgniter, la première chose à faire est de charger la bibliothèque de pagination. Et nous pouvons le faire en utilisant $this->load->library('pagination').

Nous avons également chargé l'URL helper afin de pouvoir utiliser les fonctions d'assistance globale fournies par cet assistant.

Nous sommes maintenant prêts à passer au cœur de notre contrôleur: la méthode de l'index.

Pour commencer, nous nous assurons que la base de données est chargée correctement. Ensuite, nous chargeons le modèle Users afin de pouvoir utiliser les méthodes du modèle.

Ensuite, nous initialisons quelques variables importantes.

La variable $limit_per_page définit la limite par page. Bien sûr, vous pouvez le définir comme vous le souhaitez; il est mis à 1 pour le moment à titre d'exemple.

La variable $start_index contient l'index de départ de l'enregistrement MySQL. Lorsque CodeIgniter crée les liens de pagination, il ajoute l'index de départ de la page en tant que troisième segment de l'URL par défaut. Vous pouvez modifier ce comportement par défaut, mais nous réserverons cette option à la dernière section de cet article, où nous discuterons des options de personnalisation.

Enfin, nous appelons la méthode get_total du modèle Users pour obtenir le nombre total d'enregistrements de la table users, qui est attribuée à la variable $total_records.

Ensuite, nous récupérons les enregistrements de la page actuelle en utilisant la méthode get_current_page_records.

Avant de pouvoir créer des liens de pagination, nous devons initialiser la configuration de pagination minimale à l'aide de la méthode initialize de la bibliothèque de pagination.

Et c'est l'ensemble des paramètres minimum pour construire les liens de pagination.

  • base_url: l'URL qui sera utilisée lors de la création des liens de pagination
  • total_rows: Nombre total d'enregistrements
  • per_page: Nombre d'enregistrements par page

Enfin, nous utilisons la méthode create_links pour créer des liens de pagination.

Le reste n'est que la formalité d'appeler notre vue user_listing et de rendre le résultat! Exécutez l'URL http://votre-code-site-allumeur/paging/index pour afficher la liste des utilisateurs avec les liens de pagination.

Voilà donc un exemple de pagination à la fois simple et utile que vous pouvez étendre pour répondre à vos besoins.

Dans la section suivante, nous verrons comment personnaliser la pagination par défaut en termes d’apparence et de fonctionnalité.

Explorer les options de personnalisation

Dans cette section, nous allons explorer les options disponibles que vous pouvez utiliser si vous souhaitez personnaliser les liens de pagination par défaut.

URI segment

Bien que la bibliothèque de pagination CodeIgniter détecte automatiquement le paramètre relatif à la pagination à partir de l'URL, vous pouvez définir une valeur personnalisée si vous avez un modèle d'URL différent.

Nombre de liens numériques

L'option num_links vous permet de définir le nombre de liens numériques à afficher avant et après le numéro de page actif dans les liens de pagination.

Numéro de page en tant que segment d'URI

Lorsque vous accédez au segment d'URI de pagination, il s'agit d'un index de départ par défaut. Par exemple, si vous avez dix enregistrements par page, le segment d'URI de pagination est 20 pour la troisième page. À la place, si vous souhaitez afficher les numéros de page réels dans les liens de pagination, vous pouvez définir use_page_numbers sur TRUE.

Bien sûr, vous devez vous assurer de calculer le bon index de départ en fonction du numéro de page que vous récupérez à partir de l'URL.

Préserver la chaîne de requête

Le plus souvent, vous vous retrouvez dans la situation où vous souhaitez conserver les paramètres de chaîne de requête qui ne sont pas liés à la pagination. Vous pouvez utiliser l'option reuse_query_string pour activer cette fonction.

Voici quelques options que vous pouvez utiliser pour modifier la fonctionnalité de pagination par défaut. Ensuite, nous examinerons quelques autres options vous permettant de modifier l’affichage des liens de pagination.

Étiquette d'emballage

Si vous souhaitez envelopper le code de pagination avec une autre balise HTML, vous pouvez le faire en utilisant les options full_tag_open et full_tag_close.

Cela pourrait être vraiment utile si vous souhaitez appliquer un style personnalisé aux liens de pagination.

Premier, Dernier, Suivant et Précédent

Si vous souhaitez modifier le texte qui sera affiché pour les premier, dernier, suivant et précédent liens, vous pouvez également le faire.

En outre, si vous souhaitez envelopper ces liens individuels avec n’importe quelle balise HTML, vous pouvez le faire de la même manière que nous l’avons fait pour envelopper tout le code de pagination.

Lien actif et lien numérique

Parfois, vous souhaitez styler le lien actif différemment. Vous pouvez le faire en appliquant les balises wrapper comme indiqué ci-dessous.

De la même manière, si vous souhaitez envelopper des liens numériques avec quelque chose:

Et cela met fin à l'histoire de la personnalisation. En fait, vous pouvez aller de l'avant et consulter l'exemple de personnalisation à l'adresse http://votre-site-code-allumeur/paging/custom déjà inclus dans notre fichier de contrôleur!

Configuration de pagination

Vous êtes maintenant au courant de la configuration requise pour configurer une pagination correcte avec une liste de modèles. Et la plupart du temps, vous souhaitez que le site reste le même. Qu'allez-vous faire pour y parvenir? Vous pourriez être tenté de copier le code de configuration et de le coller dans chaque action nécessitant la configuration de la pagination.

En fait, il existe une meilleure façon de gérer ce scénario. Vous pouvez créer un fichier de configuration de pagination dans application/config/pagination.php et utiliser la variable $config pour définir vos paramètres

Sur cette base, la méthode d'action index révisée devrait ressembler à ceci:

Bien entendu, les variables total_rows et base_url changent d'une action à l'autre. Vous devez donc les définir explicitement dans chaque action.

Pour ce faire, vous devez commencer par charger la configuration de pagination.

Ensuite, vous pouvez remplacer les paramètres spécifiques à l'action.

Et vous en avez fini avec ça!

C'était donc l'histoire de la configuration de la pagination, et cela termine également cet article!

Conclusion

Aujourd'hui, nous avons parcouru la bibliothèque de pagination dans CodeIgniter.

Dans la première partie de cet article, j'ai montré comment utiliser la bibliothèque de pagination en fournissant un exemple très simple mais utile.

Nous avons ensuite abordé les options de personnalisation à votre disposition lors de la configuration de la pagination.

Enfin, nous avons discuté de la configuration de la pagination dans la dernière section.

CodeIgniter est une plate-forme PHP puissante. Que vous commenciez ou que vous commenciez avec la prochaine version, n'oubliez pas de consulter également ce que nous avons à votre disposition.

J'aimerais connaître vos commentaires sous forme de questions et de commentaires à l'aide du flux ci-dessous!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.