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:
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 complètement.
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 du uid
et ton nom
champs dans votre table d'utilisateurs.
Avec cette mise en place, nous sommes prêts à rouler.
Allez-y et créez un fichier de contrôleur controllers / Paging.php
avec le contenu suivant.
charge-> bibliothèque ('pagination'); // charge l'URL d'assistance $ this-> load-> helper ('url'); public function index () // charge la base de données et le modèle $ this-> load-> database (); $ this-> load-> model ('Utilisateurs'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // récupère les enregistrements de page actuels $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'pagination / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config); // construit des liens de pagination $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params); public function custom () // charge la base de données et le modèle $ this-> load-> database (); $ this-> load-> model ('Utilisateurs'); // init params $ params = array (); $ limit_per_page = 2; $ page = ($ this-> uri-> segment (3))? ($ this-> uri-> segment (3) - 1): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // récupère les enregistrements de la page actuelle $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ page * $ limit_per_page); $ config ['base_url'] = base_url (). 'paging / custom'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; // configuration de pagination personnalisée $ config ['num_links'] = 2; $ config ['use_page_numbers'] = TRUE; $ config ['reuse_query_string'] = TRUE; $ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = ''; $ config ['first_link'] = 'Première page'; $ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_link'] = 'Dernière page'; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_link'] = 'Page suivante'; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_link'] = 'Page précédente'; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = ''; $ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = ''; $ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = ''; $ this-> pagination-> initialize ($ config); // construit des liens de pagination $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Ensuite, nous aurons besoin d'un fichier de modèle models / Users.php
qui récupère les enregistrements de la table des utilisateurs.
db-> limit ($ limit, $ start); $ query = $ this-> db-> get ("utilisateurs"); if ($ query-> num_rows ()> 0) foreach ($ query-> result () en tant que $ rangée) $ data [] = $ rangée; return $ data; return false; fonction publique get_total () return $ this-> db-> count_all ("utilisateurs");
Enfin, créons un fichier de vue sur views / user_listing.php
qui affiche la liste des utilisateurs.
Exemple de pagination - Liste d'utilisateurs Liste des utilisateurs
ID PRÉNOM uid?> uname?> Aucun utilisateur trouvé.
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
comme cela s'appelle quelque chose de nos méthodes de contrôleur. Il y a deux méthodes importantes, get_current_page_records
et get_total
, que notre modèle implémente afin de construire les liens de pagination.
Passons à travers le get_total
méthode. Il est utilisé pour compter le nombre d'enregistrements dans la table des utilisateurs.
fonction publique get_total () return $ this-> db-> count_all ("utilisateurs");
Ensuite, il y a un get_current_page_records
méthode.
fonction publique get_current_page_records ($ limit, $ start) $ this-> db-> limit ($ limit, $ start); $ query = $ this-> db-> get ("utilisateurs"); if ($ query-> num_rows ()> 0) foreach ($ query-> result () en tant que $ rangée) $ data [] = $ rangée; return $ data; return false;
Il y a deux arguments importants que vous devriez noter dans le get_current_page_records
méthode. Le premier argument, limite de $
, est utilisé pour spécifier le nombre d'enregistrements à renvoyer 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 voir, étant donné les valeurs de $ start
et limite de $
nous pouvons aller chercher les enregistrements par page. C’est l’essence même de la pagination. En attendant, nous avons mis en oeuvre 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.
fonction publique __construct () parent :: __ construct (); // charge la bibliothèque de pagination $ this-> load-> library ('pagination'); // charge l'URL d'assistance $ this-> load-> helper ('url');
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..
Maintenant, nous sommes prêts à passer par le cœur de notre contrôleur, le indice
méthode.
public function index () // charge la base de données et le modèle $ this-> load-> database (); $ this-> load-> model ('Utilisateurs'); // init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); if ($ total_records> 0) // récupère les enregistrements de page actuels $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index); $ config ['base_url'] = base_url (). 'pagination / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config); // construit des liens de pagination $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Pour commencer, nous nous assurons que la base de données est chargée correctement. Suite à cela, nous chargeons le Utilisateurs
modèle afin que nous puissions utiliser les méthodes de modèle.
$ this-> load-> database (); $ this-> load-> model ('Utilisateurs');
Ensuite, nous initialisons quelques variables importantes.
// init params $ params = array (); $ limit_per_page = 1; $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total ();
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 à des fins d'exemple.
le $ start_index
variable 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 le get_total
méthode du modèle Users pour obtenir le nombre total d’enregistrements de la table users, et elle est affectée à la $ total_records
variable.
Ensuite, nous récupérons les enregistrements de la page en cours en utilisant le get_current_page_records
méthode.
// récupère les enregistrements de page actuels $ params ["results"] = $ this-> Users-> get_current_page_records ($ limit_per_page, $ start_index);
Avant de pouvoir créer des liens de pagination, nous devons initialiser la configuration de pagination minimale à l’aide de la initialiser
méthode de la bibliothèque de pagination.
$ config ['base_url'] = base_url (). 'pagination / index'; $ config ['total_rows'] = $ total_records; $ config ['per_page'] = $ limit_per_page; $ config ["uri_segment"] = 3; $ this-> pagination-> initialize ($ config);
Et c'est l'ensemble des paramètres minimum pour construire les liens de pagination.
Enfin, nous utilisons le create_links
méthode pour créer des liens de pagination.
// construit des liens de pagination $ params ["links"] = $ this-> pagination-> create_links ();
Le reste n'est que la formalité à appeler notre avis liste_utilisateur
et rendre la sortie! Exécutez l'URL http: // votre-code-site-allumeur / paging / index pour voir la liste des utilisateurs ainsi que les liens de pagination..
Voilà donc un exemple de pagination très simple mais utile à votre disposition 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é..
Dans cette section, nous allons explorer les options disponibles que vous pouvez utiliser si vous souhaitez personnaliser les liens de pagination par défaut..
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..
$ config ["uri_segment"] = 4;
le num_links
option vous permet de définir le nombre de chiffre liens qui seront affichés avant et après le numéro de la page active dans les liens de pagination.
$ config ['num_links'] = 2;
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. Au lieu de cela, si vous souhaitez afficher les numéros de page réels dans les liens de pagination, vous pouvez définir use_page_numbers
à VRAI
.
$ config ['use_page_numbers'] = 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..
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 le reuse_query_string
option pour activer cette installation.
$ config ['reuse_query_string'] = TRUE;
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..
Si vous voulez envelopper le code de pagination avec une autre balise HTML, vous pouvez le faire en utilisant le full_tag_open
et full_tag_close
options.
$ config ['full_tag_open'] = ''; $ config ['full_tag_close'] = '';
Cela pourrait être vraiment utile si vous souhaitez appliquer un style personnalisé aux liens de pagination..
Si vous souhaitez modifier le texte qui sera affiché pour le premier, le dernier, le prochain et les liens précédents, vous pouvez également le faire..
$ config ['first_link'] = 'Première page'; $ config ['last_link'] = 'Dernière page'; $ config ['next_link'] = 'Page suivante'; $ config ['prev_link'] = 'Page précédente';
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..
$ config ['first_tag_open'] = ''; $ config ['first_tag_close'] = ''; $ config ['last_tag_open'] = ''; $ config ['last_tag_close'] = ''; $ config ['next_tag_open'] = ''; $ config ['next_tag_close'] = ''; $ config ['prev_tag_open'] = ''; $ config ['prev_tag_close'] = '';
Parfois, vous souhaitez styler le lien actif différemment. Vous pouvez le faire en appliquant les balises wrapper comme indiqué ci-dessous.
$ config ['cur_tag_open'] = ''; $ config ['cur_tag_close'] = '';
De la même manière, si vous souhaitez envelopper des liens numériques avec quelque chose:
$ config ['num_tag_open'] = ''; $ config ['num_tag_close'] = '';
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-initiateur / paging / custom qui est déjà inclus dans notre fichier de contrôleur.!
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 à application / config / pagination.php
et utiliser le $ config
variable pour définir vos paramètres.
'; $ config ['full_tag_close'] = '
Sur cette base, la version révisée indice
méthode d'action devrait ressembler à ceci:
public function index () // charge la base de données et le modèle $ this-> load-> database (); $ this-> load-> model ('Utilisateurs'); // init params $ params = array (); $ start_index = ($ this-> uri-> segment (3))? $ this-> uri-> segment (3): 0; $ total_records = $ this-> Users-> get_total (); // charge le fichier de configuration $ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('pagination'); $ settings ['total_rows'] = $ this-> Users-> get_total (); $ settings ['base_url'] = base_url (). 'paging / config'; if ($ total_records> 0) // récupère les enregistrements de page actuels $ params ["results"] = $ this-> Users-> get_current_page_records ($ settings ['per_page'], $ start_index); // utilise les paramètres pour initialiser la bibliothèque $ this-> pagination-> initialize ($ settings); // construit des liens de pagination $ params ["links"] = $ this-> pagination-> create_links (); $ this-> load-> view ('user_listing', $ params);
Bien sûr, le total_rows
et base_url
les variables 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..
$ this-> config-> load ('pagination', TRUE); $ settings = $ this-> config-> item ('pagination');
Ensuite, vous pouvez remplacer les paramètres spécifiques à l'action.
$ settings ['total_rows'] = $ this-> Users-> get_total (); $ settings ['base_url'] = base_url (). 'paging / config';
Et vous en avez fini avec ça!
C'était donc l'histoire de la configuration de la pagination, et cela termine également cet article!
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..
Ensuite, nous avons discuté des 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 vérifier 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.!