paginator-simple.xml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="learning.paginator.simple">
  5. <title>Exemples simples</title>
  6. <para>
  7. Dans ce premier exemple nous n'allons rien faire de magnifique, mais ça donnera une
  8. bonne idée de l'utilité de <classname>Zend_Paginator</classname>.
  9. Imaginons un tableau $data qui contient les chiffres de 1 à 100, nous voulons le
  10. diviser en un nombre de pages. Nous pouvons utiliser la méthode statique
  11. <methodname>factory()</methodname> de <classname>Zend_Paginator</classname> pour
  12. récupérer un objet <classname>Zend_Paginator</classname> avec notre tableau à
  13. l'intérieur.
  14. </para>
  15. <programlisting language="php"><![CDATA[
  16. // Créer un tableau contenant les chiffres de 1 à 100
  17. $data = range(1, 100);
  18. // Récupérons un objet Paginator grâce à la fabrique.
  19. $paginator = Zend_Paginator::factory($data);
  20. ]]></programlisting>
  21. <para>
  22. C'est presque terminé! La variable $paginator contient une référence vers l'objet
  23. Paginator. Par défaut il servira 10 entités par page. Pour afficher les données sur
  24. la page, il suffit d'itérer sur l'objet Paginator dans une boucle foreach. La page
  25. en cours est par défaut la première, nous verrons comment choisir une page après.
  26. Le code ci-après affiche une liste qui contient les chiffres de 1 à 10, ce sont
  27. les chiffres de la première page.
  28. </para>
  29. <programlisting language="php"><![CDATA[
  30. // Créer un tableau contenant les chiffres de 1 à 100
  31. $data = range(1, 100);
  32. // Récupérons un objet Paginator grâce à la fabrique.
  33. $paginator = Zend_Paginator::factory($data);
  34. ?><ul><?php
  35. // Rendu de chaque donnée dans une liste
  36. foreach ($paginator as $item) {
  37. echo '<li>' . $item . '</li>';
  38. }
  39. ?></ul>
  40. ]]></programlisting>
  41. <para>
  42. Essayons maintenant de récupérer les données de la deuxième page. Vous pouvez utiliser
  43. la méthode <methodname>setCurrentPageNumber()</methodname> pour choisir la page.
  44. </para>
  45. <programlisting language="php"><![CDATA[
  46. // Créer un tableau contenant les chiffres de 1 à 100
  47. $data = range(1, 100);
  48. // Récupérons un objet Paginator grâce à la fabrique.
  49. $paginator = Zend_Paginator::factory($data);
  50. // Selection de la page 2
  51. $paginator->setCurrentPageNumber(2);
  52. ?><ul><?php
  53. // Rendu de chaque donnée dans une liste
  54. foreach ($paginator as $item) {
  55. echo '<li>' . $item . '</li>';
  56. }
  57. ?></ul>
  58. ]]></programlisting>
  59. <para>
  60. Bien sûr ici, ce sont les chiffres 1 à 20 qui s'affichent.
  61. </para>
  62. <para>
  63. Ces quelques exemples simplifiés sont loin de tout montrer sur
  64. <classname>Zend_Paginator</classname>. Une application réelle ne lit pas ses données depuis
  65. un tableau c'est pourquoi la section suivante montre comment utiliser le Paginator avec des
  66. résultats d'une requête sql. Au besoin, familiarisez vous avec
  67. <classname>Zend_Db_Select</classname>.
  68. </para>
  69. <para>
  70. Dans l'exemple utilisant une base de données, nous chercherons des billets de blog appelés
  71. 'posts'. La table des 'posts' a quatre colonnes: id, title, body, date_created.
  72. Voyons un exemple simple.
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. // Créons un objet select qui récupère des billets et les range par date de création descendante
  76. $select = $db->select()->from('posts')->sort('date_created DESC');
  77. // Créons un paginateur pour cette requête
  78. $paginator = Zend_Paginator::factory($select);
  79. // Selection de la page 2
  80. $paginator->setCurrentPageNumber(2);
  81. ?><ul><?php
  82. // Affichage du titre de chaque billet pour la page en cours
  83. foreach ($paginator as $item) {
  84. echo '<li>' . $item->title . '</li>';
  85. }
  86. ?></ul>
  87. ]]></programlisting>
  88. <para>
  89. Comme vous le voyez, cet exemple n'est pas très différent du précédent. La seule différence
  90. est <classname>Zend_Db_Select</classname> qui est passé à la méthode
  91. <methodname>factory()</methodname> à la place d'un tableau.
  92. Pour plus de détails notamment sur l'optimisation de la requête de l'objet select,
  93. lisez le chapitre sur les adaptateurs DbSelect et DbTableSelect de la documentation de
  94. <classname>Zend_Paginator</classname>.
  95. </para>
  96. </sect1>