UtilisationPaginer des collections de donnéesAfin de pouvoir paginer des éléments, Zend_Paginator doit posséder une manière générique
d'accéder aux sources de données. De ce fait, tous les accès aux données se font via des adaptateurs de sources.
Plusieurs adaptateurs existent par défaut :
Adaptateurs pour Zend_PaginatorAdaptateurDescriptionArrayUtilise un tableau PHPDbSelectUtilise une instance de Zend_Db_Select
qui retourne un tableauDbTableSelectUtilise une instance Zend_Db_Table_Select, qui retournera une
instance de Zend_Db_Table_Rowset_Abstract. Ceci fournit aussi des informations
supplémentaires sur le jeu de résultats, tel que les noms de colonne.IteratorUtilise une instance implémentant IteratorNullN'utilise pas Zend_Paginator pour la pagination. En revanche, les options et
capacités de contrôle de la pagination restent disponibles.
Plutôt que de sélectionner chaque ligne correspondant à une requête fournie, les adaptateurs
DbSelect et DbTableSelect récupèrent seulement la quantité de données nécessaire
pour l'affichage de la page courante.A cause de ceci, une seconde requête est générée dynamiquement pour déterminer le nombre total de
lignes correspondantes. Cependant, il est possible de directement fournir un nombre ou un requête de
dénombrement vous-même. Regardez la méthode setRowCount() de l'adaptateur DbSelect
pour de plus amples informations.Pour créer une instance de Zend_Paginator, vous devez spécifier un adaptateur à son
constructeur:Pour une meilleure intégration, vous pouvez utiliser la fabrique factory():Pour l'adaptateur Null, il faut spécifier un chiffre à son constructeur en lieu et place
de la collection de données.Bien que l'instance soit techniquement utilisable dans l'état, dans votre contrôleur d'action vous devrez
informer le paginateur du numéro de page demandé par l'utilisateur. Ceci lui permet d'avancer à travers les
données paginées.setCurrentPageNumber($page);
]]>La manière la plus simple de suivre et scruter cette valeur est via l'URL. Nous recommandons l'utilisation
d'un routeur compatible avec Zend_Controller_Router_Interface, mais ceci n'est pas
nécessaire.Voici une route que vous pourriez définir dans un fichier de configuration INI:Avec une telle route (et en utilisant les composants MVC de Zend Framework), vous pourriez spécifier le
numéro de la page de cette manière :setCurrentPageNumber($this->_getParam('page'));
]]>Il y a d'autres options disponibles, voyez la
configuration pour plus de détails.Enfin, il faut passer l'instance du paginateur à votre vue. Si vous utilisez Zend_View avec
l'aide d'action ViewRenderer, ceci fonctionnera :view->paginator = $paginator;
]]>Rendre des pages avec les scripts de vueLe script de vue va être utilisé pour rendre les éléments de la page (bien sûr si
Zend_Paginator est utilisé à cet effet), et pour afficher les éléments relatifs au contrôle de la
pagination.Comme Zend_Paginator implémente l'interface SPL IteratorAggregate,
boucler sur les éléments et les afficher est très simple.