La pagination avec Symfony

Il y a moins de 3 mois, j'ai évoqué la pagination avec CakePHP.

Cette fois-ci je vais expliquer la pagination avec Symfony2.

Contrairement à CakePHP ou la pagination est intégrée en native, avec Symfony il faut pour l' instant passer par un téléchargement d'un bundle.


Le bundle à télécharger est le KnpPaginatorBundle.

https://github.com/KnpLabs/KnpPaginatorBundle


On peut lui reprocher d'être trop lourd et peu performant quand on veut charger beaucoup d'articles dans un blog.
Mais c'est surement la manière la plus simple pour avoir une pagination efficace pour son blog.

Je ne reviens pas sur l' installation du bundle. Tout est indiqué dans la doc.

Une fois fait cela il faut aller dans app\config\config.yml afin de déclarer et configurer le bundle.

Je vous donne ma configuration:

knp_paginator: page_range: 5
     default_options:
             sort_field_name: sort
              sort_direction_name: direction
              distinct: true
   template:
              pagination: AstuceinfoBlogBundle:Blog:twitter_bootstrap_v3_pagination.html.twig     
             sortable: AstuceinfoBlogBundle:Blog:sortable_link.html.twig

Puis dans le contrôleur on récupère la liste de tous les articles et on fait appelle au service "knp_paginator"
On appelle la methode paginate

Voici mon code :

<? $articles = $this->getDoctrine()
    ->getManager()
    ->getRepository('MonblogBlogBundle:Article')
    ->findBy(array(),array('id' => 'DESC'));

 $paginator  = $this->get('knp_paginator');
    $pagination = $paginator->paginate(
        $articles,
        $this->get('request')->query->get('page', 1),
        5 // nombre d'' article par page
    );	
	
	
	

    // L'appel de la vue ne change pas
    return $this->render('MonblogBlogBundle:Blog:index.html.twig', array(
      'pagination' => $pagination)); ?>

Puis dans la vue on fait appelle à la variable pagination afin d' obtenir notre pagination {{ knp_pagination_render(pagination) }}

Voilà la manière de réaliser très simplement un pagination sous symfony 2 en espérant dans une future version de Symfony un système de pagination en native intégréé au Framework comme pour CakePHP



PHP Symfony Pagination

Commentaire (0)


Laissez un commentaire