Introduction :
Nous allons voir dans ce Tuto comment créer
un system de pagination ( KnpPaginatorBundle ) pour gérer le nombre de film à afficher dans une page
web.
Installation et Configuration du KnpPaginatorBundle :
Nous
allons rendre visite au site http://knpbundles.com/ ou il
y a plus que 2700 bundles à utiliser et intégrer dans notre applicationDans la zone de recherche tapez KnpPaginatorBundle
http://knpbundles.com/KnpLabs/KnpPaginatorBundle
http://knpbundles.com/KnpLabs/KnpPaginatorBundle
- Tapez cette ligne de commande dans CMD
php composer.phar require knplabs/knp-paginator-bundle - Copier la configuration dans fichier config.yml de votre application.
knp_paginator: page_range: 5 # default page range used in pagination control default_options: page_name: page # page query parameter name sort_field_name: sort # sort field query parameter name sort_direction_name: direction # sort direction query parameter name distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements template: pagination: KnpPaginatorBundle:Pagination:sliding.html.twig # sliding pagination controls template sortable: KnpPaginatorBundle:Pagination:sortable_link.html.twig # sort link template - Activer le bundle dans Appkernel.php
public function registerBundles() { return array( // ... new Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(), // ... ); } - Ajouter la fonction de pagination dans Controller
public function indexAction() { $em = $this->getDoctrine()->getManager(); $request=$this->getRequest(); $listefilms = $em->getRepository('FilmoBundle:Film')->findAll(); $entities = $this->get('knp_paginator')->paginate($listefilms,
$request->query->get('page', 1)/*page number*/,
6/*limit per page*/
);
return $this->render('FilmoBundle:Film:index.html.twig', array(
'entities' => $entities, )); } Dans cette exemple nous allons appliquée le system de pagination à la $listeFilms pour afficher 6 films par page commençant par la page 1
- Implémenter le system de pagination dans View
{# display navigation #} <div class="navigation"> {{ knp_pagination_render(entities) }} </div>
Voici le vidéo de l'exemple :