La Pagination en Symfony 3

La Pagination en Symfony 3

Etape 1:

L’installation de KnpPaginatorBundle avec composer:

composer require knplabs/knp-paginator-bundle

 

Etape 2:

L’ajout du KnpPaginatorBundle au AppKenrnel.php

public function registerBundles()
{
    return array(
        // ...
        new Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),
        // ...
    );
}

 

Etape 3:

L’ajout des paramètres dans config.yml

knp_paginator:
    page_range: 5                      
    default_options:
        page_name: page               
        sort_field_name: sort         
        sort_direction_name: direction
        distinct: true                
    template:
        pagination: 'KnpPaginatorBundle:Pagination:sliding.html.twig'    
        sortable: 'KnpPaginatorBundle:Pagination:sortable_link.html.twig'

 

Etape 4:

La modification dans notre controller

/* PARTIE USE */
use Doctrine\ORM\Tools\Pagination\Paginator;
use Symfony\Component\HttpFoundation\Request;



public function indexAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();

    $articles = $em->getRepository('ArticlesBundle:Article')->findAll();

    $articles = $this->get('knp_paginator')->paginate( $articles, $request->query->get('page', 1), 2 );

    return $this->render('PagesBundle:Default:index.html.twig', array(
        'articles' => $articles,
    ));
}

 

Etape 5:

L’affichage dans le Twig

{% for article in articles %}

...

{% endfor %}


{{ knp_pagination_render(articles) }}