Il existe beaucoup de Bundle permettant de mettre en place un système de pagination au sein de votre projet Symfony. Le plus connu étant KNP Paginator qui, il est vrai, m’a beaucoup aidé à mes débuts. Mais ils ont tous un énorme défaut : l’optimisation.

En effet, pour créer une pagination sur une requête avec Doctrine, il nous faut une information cruciale : le nombre total de résultats. Ainsi, ils exécutent la requête sur l’intégralité de votre base, comptent le nombre de résultats obtenus, puis « coupent » les résultats pour ne retourner que ceux voulus (voir, pour certains, effectuent une seconde requête).

Dans les faits, ça fonctionne, mais dès que vous essayez de paginer une liste de plus d’un millier de résultat, votre serveur commence alors à prendre très cher, rallongeant beaucoup le temps de chargement pour vos visiteurs.

Pourtant, Doctrine, intégré à Symfony, a mis en place, depuis Janvier 2012, la méthode Paginator qui permet d’optimiser très simplement un sytème de pagination.

Pour les besoins d’un de mes projets professionnels, j’ai eu l’occasion d’automatiser la chose avec un nouveau Bundle, que je vous mets à disposition : Tiloweb Pagination Bundle (très original).

Lire la suite de