V. Développer avec PHPBoost

Système de pagination

Le framework de PHPBoost intègre une classe vous permettant de générer très facilement une pagination complète.

Nous allons voir comment l'utiliser.

Utilisation de la classe ModulePagination



La classe ModulePagination prend plusieurs paramètres :

$pagination = new ModulePagination($current_page, $number_elements, $number_items_per_page, $type = Pagination::FULL_PAGINATION);


  • Le premier paramètre est le numéro de la page où vous êtes actuellement.
  • Le deuxième est le nombre d'éléments
  • Le troisième est le nombre d'éléments par page que vous souhaitez avoir
  • Le quatrième (facultatif) est le type de pagination,
    Pagination::FULL_PAGINATION
    pour avoir une pagination complète, ou
    Pagination::LIGHT_PAGINATION
    pour une pagination plus compacte


Prenons un exemple :

Code PHP :
// On compte le nombre d'éléments dans votre base de données
$number_items = PersistenceContext::get_querier()->count('votre_table');
// 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 ModulePagination($current_page, $number_items, 20);


Vous allez ensuite pouvoir utiliser les fonctions de la classe pour afficher la pagination, récupérer le numéro de la page, ...

Liste des fonctions disponible



Définir l'url de la pagination



Code PHP :
$pagination->set_url(PATH_TO_ROOT . '/votre_module/votre_page.php?page=%d');


La classe va s'occuper de remplacer %d par le numéro de page.

Afficher la pagination



La fonction display va renvoyer le code HTML de la pagination. Créez une variable TPL ou utiliser un echo :

Code PHP :
echo $pagination->display();


Récupérer le nombre d'éléments par page



C'est celui que vous avez défini en troisième paramètre.

Pour le récupérer :
Code PHP :
$pagination->get_number_items_per_page();


Savoir si la page actuelle possède des éléments ou non



Vous pouvez savoir si la page actuelle possède ou non des éléments pour renvoyer une erreur 404 par la suite comme ceci :

Code PHP :
if ($pagination->current_page_is_empty() && $page > 1)
{
    $error_controller = PHPBoostErrors::unexisting_page();
    DispatchManager::redirect($error_controller);
}


Savoir s'il y a besoin de la pagination ou non



Vous pouvez utiliser la fonction has_several_pages() pour savoir si vous devez ou non afficher la pagination dans votre page. En effet, la pagination n'est pas utile s'il n'y a qu'une page à afficher ...

Code PHP :
$pagination->has_several_pages();


Récupérer le nombre de pages



Pour le récupérer :
Code PHP :
$pagination->get_number_pages();


Récupérer le nombre à partir duquel vous devez récupérer les éléments en base de données



Selon la page demandée, vous n'allez pas afficher les mêmes éléments. Pour connaitre à partir de quel élément vous devez récupérer vos articles par exemple, il faut s'aider de cette fonction :

Code PHP :
$pagination->get_display_from();
Cette page a été vue 4167 fois