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 :
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():
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.
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 :
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
The DbSelect and DbTableSelect adapterThe usage of most adapters is pretty straight-forward. However, the database adapters require a more detailed explanation regarding the retrieval and count of the data from the database. To use the DbSelect and DbTableSelect adapters you don't have to retrieve the data upfront from the database. Both adapters do the retrieval for you, aswell as the counting of the total pages. If additional work has to be done on the database results the adapter getItems() method has to be extended in your application. Additionally these adapters do not fetch all records from the database Instead, the adapters manipulates the original query to produce the corresponding COUNT query. Paginator then executes that COUNT query to get the number of rows. This does require an extra round-trip to the database, but this is many times faster than fetching an entire result set and using count(). Especially with large collections of data. The database adapters will try and build the most efficient query that will execute on pretty much all modern databases. However, depending on your database or even your own schema setup, there might be more efficient ways to get a rowcount. For this scenario the database adapters allow you to set a custom COUNT query. For example, if you keep track of the count of blog posts in a separate table, you could achieve a faster count query with the following setup:
This approach will probably not give you a huge performance gain on small collections and/or simple select queries. However, with complex queries and large collections, a similar approach could give you a significant performance boost. 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 »
Notez l'appel à l'aide de vue en fin de script. Les second et troisième paramètres sont très importants. Alors que le partial est utiliser pour déterminer comment présenter les données, le type de défilement définira la manière dont ils se comportent. Disons que le partial ressemble à un contrôle de recherche, comme ce qui suit :
![]() Que se passe-t-il lorsque l'utilisateur clique sur le lien "next" quelques fois? Plusieurs choses peuvent arriver. Le numéro de la page courante pourrait rester au milieu (comme c'est le cas sur Yahoo!), ou il pourrait aussi bien avancer à la fin de la fourchette des pages et apparaître encore à gauche lorsque l'utilisateur clique alors sur "next". Le nombre de pages pourrait alors s'étendre ou se comprimer alors que l'utilisateur avance ("scroll") à travers (comme chez Google). Il existe 4 types de défilement intégrés dans Zend Framework :
Le quatrième et dernier paramètre est réservé pour un tableau associatif optionnel de variables supplémentaires que vous voulez rendre disponible dans vos partiels de vues (disponible via $this). Par exemple, ces valeurs permettent d'inclure des paramètres d'URL supplémentaires pour les liens de pagination.
En spécifiant le partial de vue par défaut, le défilement et l'instance de vue,
vous pouvez alors vous affranchir totalement des appels à
Utilisez dès lors un simple
Exemples de contrôles de paginationVoici quelques exemples qui vous aideront à démarrer avec le paginateur: Pagination de recherche :
Pagination d'objets :
Pagination Dropdown :
Liste des propriétésLes options suivantes sont disponibles pour contrôler la pagination dans les partials de vue :
|