Exemples simples

Dans ce premier exemple nous n'allons rien faire de magnifique, mais ça donnera une bonne idée de l'utilité de Zend_Paginator. Imaginons un tableau $data qui contient les chiffres de 1 à 100, nous voulons le diviser en un nombre de pages. Nous pouvons utiliser la méthode statique factory() de Zend_Paginator pour récupérer un objet Zend_Paginator avec notre tableau à l'intérieur.

  1. // Créer un tableau contenant les chiffres de 1 à 100
  2. $data = range(1, 100);
  3.  
  4. // Récupérons un objet Paginator grâce à la fabrique.
  5. $paginator = Zend_Paginator::factory($data);

C'est presque terminé! La variable $paginator contient une référence vers l'objet Paginator. Par défaut il servira 10 entités par page. Pour afficher les données sur la page, il suffit d'itérer sur l'objet Paginator dans une boucle foreach. La page en cours est par défaut la première, nous verrons comment choisir une page après. Le code ci-après affiche une liste qui contient les chiffres de 1 à 10, ce sont les chiffres de la première page.

  1. // Créer un tableau contenant les chiffres de 1 à 100
  2. $data = range(1, 100);
  3.  
  4. // Récupérons un objet Paginator grâce à la fabrique.
  5. $paginator = Zend_Paginator::factory($data);
  6.  
  7. ?><ul><?php
  8.  
  9. // Rendu de chaque donnée dans une liste
  10. foreach ($paginator as $item) {
  11.     echo '<li>' . $item . '</li>';
  12. }
  13.  
  14. ?></ul>

Essayons maintenant de récupérer les données de la deuxième page. Vous pouvez utiliser la méthode setCurrentPageNumber() pour choisir la page.

  1. // Créer un tableau contenant les chiffres de 1 à 100
  2. $data = range(1, 100);
  3.  
  4. // Récupérons un objet Paginator grâce à la fabrique.
  5. $paginator = Zend_Paginator::factory($data);
  6.  
  7. // Selection de la page 2
  8. $paginator->setCurrentPageNumber(2);
  9.  
  10. ?><ul><?php
  11.  
  12. // Rendu de chaque donnée dans une liste
  13. foreach ($paginator as $item) {
  14.     echo '<li>' . $item . '</li>';
  15. }
  16.  
  17. ?></ul>

Bien sûr ici, ce sont les chiffres 1 à 20 qui s'affichent.

Ces quelques exemples simplifiés sont loin de tout montrer sur Zend_Paginator. Une application réelle ne lit pas ses données depuis un tableau c'est pourquoi la section suivante montre comment utiliser le Paginator avec des résultats d'une requête sql. Au besoin, familiarisez vous avec Zend_Db_Select.

Dans l'exemple utilisant une base de données, nous chercherons des billets de blog appelés 'posts'. La table des 'posts' a quatre colonnes: id, title, body, date_created. Voyons un exemple simple.

  1. // Créons un objet select qui récupère des billets et les range par date de création descendante
  2. $select = $db->select()->from('posts')->sort('date_created DESC');
  3.  
  4. // Créons un paginateur pour cette requête
  5. $paginator = Zend_Paginator::factory($select);
  6.  
  7. // Selection de la page 2
  8. $paginator->setCurrentPageNumber(2);
  9.  
  10. ?><ul><?php
  11.  
  12. // Affichage du titre de chaque billet pour la page en cours
  13. foreach ($paginator as $item) {
  14.     echo '<li>' . $item->title . '</li>';
  15. }
  16.  
  17. ?></ul>

Comme vous le voyez, cet exemple n'est pas très différent du précédent. La seule différence est Zend_Db_Select qui est passé à la méthode factory() à la place d'un tableau. Pour plus de détails notamment sur l'optimisation de la requête de l'objet select, lisez le chapitre sur les adaptateurs DbSelect et DbTableSelect de la documentation de Zend_Paginator.

blog comments powered by Disqus