| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="learning.paginator.simple">
- <title>Exemples simples</title>
- <para>
- Dans ce premier exemple nous n'allons rien faire de magnifique, mais ça donnera une
- bonne idée de l'utilité de <classname>Zend_Paginator</classname>.
- 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
- <methodname>factory()</methodname> de <classname>Zend_Paginator</classname> pour
- récupérer un objet <classname>Zend_Paginator</classname> avec notre tableau à
- l'intérieur.
- </para>
- <programlisting language="php"><![CDATA[
- // Créer un tableau contenant les chiffres de 1 à 100
- $data = range(1, 100);
- // Récupérons un objet Paginator grâce à la fabrique.
- $paginator = Zend_Paginator::factory($data);
- ]]></programlisting>
- <para>
- 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.
- </para>
- <programlisting language="php"><![CDATA[
- // Créer un tableau contenant les chiffres de 1 à 100
- $data = range(1, 100);
- // Récupérons un objet Paginator grâce à la fabrique.
- $paginator = Zend_Paginator::factory($data);
- ?><ul><?php
- // Rendu de chaque donnée dans une liste
- foreach ($paginator as $item) {
- echo '<li>' . $item . '</li>';
- }
- ?></ul>
- ]]></programlisting>
- <para>
- Essayons maintenant de récupérer les données de la deuxième page. Vous pouvez utiliser
- la méthode <methodname>setCurrentPageNumber()</methodname> pour choisir la page.
- </para>
- <programlisting language="php"><![CDATA[
- // Créer un tableau contenant les chiffres de 1 à 100
- $data = range(1, 100);
- // Récupérons un objet Paginator grâce à la fabrique.
- $paginator = Zend_Paginator::factory($data);
- // Selection de la page 2
- $paginator->setCurrentPageNumber(2);
- ?><ul><?php
- // Rendu de chaque donnée dans une liste
- foreach ($paginator as $item) {
- echo '<li>' . $item . '</li>';
- }
- ?></ul>
- ]]></programlisting>
- <para>
- Bien sûr ici, ce sont les chiffres 1 à 20 qui s'affichent.
- </para>
- <para>
- Ces quelques exemples simplifiés sont loin de tout montrer sur
- <classname>Zend_Paginator</classname>. 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
- <classname>Zend_Db_Select</classname>.
- </para>
- <para>
- 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.
- </para>
- <programlisting language="php"><![CDATA[
- // Créons un objet select qui récupère des billets et les range par date de création descendante
- $select = $db->select()->from('posts')->sort('date_created DESC');
- // Créons un paginateur pour cette requête
- $paginator = Zend_Paginator::factory($select);
- // Selection de la page 2
- $paginator->setCurrentPageNumber(2);
- ?><ul><?php
- // Affichage du titre de chaque billet pour la page en cours
- foreach ($paginator as $item) {
- echo '<li>' . $item->title . '</li>';
- }
- ?></ul>
- ]]></programlisting>
- <para>
- Comme vous le voyez, cet exemple n'est pas très différent du précédent. La seule différence
- est <classname>Zend_Db_Select</classname> qui est passé à la méthode
- <methodname>factory()</methodname> à 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
- <classname>Zend_Paginator</classname>.
- </para>
- </sect1>
|