Gérer une pagination dans une application Dancer.
Lorsqu'on souhaite afficher un flux de données important sur une page, il peut-être intéressant de gérer une pagination. Ceci apportera deux avantages, le premier d'un point de vue utilisateur, il sera plus facile pour une personne de visualiser un petit flux de données et de pas avoir une page trop longue, le deuxième d'un point de vue performance, une page avec un flux très important sera longue à charger.
Nous allons découvrir comment résoudre le problème facilement pour une application Dancer. Il existe pour répondre à ça un plugin pour template-toolkit appelé Template::Plugin::Pagination. Il est développé par Tony Bowden, il dépend de Data::Pageset développé par Leo Lapworth.
sudo cpanm Template::Plugin::Pagination
Du côté contrôleur c'est-à-dire les package Perl, il faudra rendre accessible deux variables au template.
template 'index', {
current_page => params->{page},
entries_per_page => 20,
data => $data
};
La première current_page, va récupérer le paramètre en query_string passer à l'url, par exemple ?page=2, et entries_per_page représente le nombre de données qu'on souhaite afficher par page.
<% USE page = Pagination(data, current_page, entries_per_page) %>
-
<% FOREACH item IN page.page_data %>
- <% item %> <% END %>