Dernière mise à jour : 26/11/2012 à 11h49
Table des matières
Nous allons voir comment l'utiliser.
Le constructeur de la classe prend deux paramètres :
Pagination($nb_pages, $current_page)
Le premier paramètre demande le nombre de pages totales et le deuxième la page où vous êtes actuellement.
Vous devez également définir par la suite l'url à travers la fonction
set_url_sprintf_pattern($url_pattern)ou
set_url_builder_callback($callback).
Je vais vous montrer deux cas d'utilisation de cette classe selon vos méthode de développement :
Dans une page PHP classique
Code PHP :
// On compte le nombre d'éléments dans votre base de données $number_items = PersistenceContext::get_querier()->count('votre_table'); // On calcule le nombre de page qu'il va y a voir selon vos éléments et le nombre que vous souhaitez afficher, 15 éléments dans ce cas là $number_pages = ceil($number_items / 15); // On récupère le numéro de page courante et on lui donne la valeur de 1 si elle n'est pas définie $current_page = AppContext::get_request()->get_getint('page', 1); // On initialise la classe pagination avec les différents paramètres $pagination = new Pagination($number_pages, $current_page); // On défini l'url de redirection $pagination->set_url_sprintf_pattern(PATH_TO_ROOT . '/votre_module/votre_page.php?page=%d'); // On affiche la pagination echo $pagination->export();
En Orienté Objet
Code PHP :
<?php class UserUsersListPagination { private $pagination; private $current_page; private $number_users_per_page = 15; public function __construct($current_page) { $this->current_page = $current_page; $this->pagination = new Pagination($this->get_number_pages(), $this->current_page); } public function set_url($field, $sort) { $this->pagination->set_url_sprintf_pattern(UserUrlBuilder::users($field, $sort, '%d')->absolute()); } public function display() { return $this->pagination->export(); } public function get_number_users_per_page() { return $this->number_users_per_page; } public function get_display_from() { $current_page = $this->current_page > 0 ? $this->current_page : 1; return ($current_page - 1) * $this->number_users_per_page; } private function get_number_pages() { return ceil($this->get_number_users() / $this->number_users_per_page); } private function get_number_users() { return PersistenceContext::get_querier()->count(DB_TABLE_MEMBER); } } ?>