Ajout 2 paginations différentes sur même page en symfony

Par Trueman29los, il y a 2 ans


Bonjour,

Comment peut-on ajouter 2 paginations différentes dans une seule action (une page) en Symfony ?
Mon code ci-dessous affiche les données correctement mais quand je clique le numéro de l'autres pagination, les données de l'autres ne s'affichent pas.

use App\Entity\{Assurance, Vehicle, ControleTechnique}; use App\Form\{AssuranceType, VehiculeType, ControleTechniqueType}; $query1 = $entityManager->getRepository(Assurance::class)->findBy([ 'vehicle' => $vehicule->getId(), 'transporteur' => $transporteur->getId(), ], ['id' => 'DESC']); $pagination1 = $paginator->paginate( $query1, $request->query->getInt('page', 1), 12 ); $query2 = $entityManager->getRepository(ControleTechnique::class)->findBy([ 'vehicle' => $vehicule->getId(), 'transporteur' => $transporteur->getId(), ], ['id' => 'DESC']); $pagination2 = $paginator->paginate( $query2, $request->query->getInt('page', 1), 12 ); return $this->render('transporteur/vehicle/assurance/assurance.html.twig', [ 'vehicle' => $vehicule, 'assurances' => $pagination1, 'controleTechniques' => $pagination2, ]); }

Aidez-moi mes amis !

6 réponses

kyfr59, il y a 2 ans

Je pense que le souci vient de ces 2 lignes :
$request->query->getInt('page', 1),

Les 2 paginations sont basées sur le même paramètre de l'URL (page).

Il te faudrait 2 paramètres différents : page_assurance et page_ct

Franck.

Trueman29los, il y a 2 ans

Merci pour votre réponse Kyfr.
Je l'ai déjà essayé en avant tandis que je clique la pagination sur chacun deux, la pagination ne marche pas.

Trueman

SiProdZz, il y a 2 ans

Salut, tout semble ok mais il faut deux paramètres get différentes.
Le get c'est lélément que tu retrouves dans l'url de ton lien http.

Trueman29los, il y a 2 ans

@SiProdZz Je l'ai déjà essayé avec get différentes mais knpPaginator ne marche pas.

Didier G, il y a 2 ans

Essaye d'ajouter
'''
$pagination1 = $paginator->paginate(
$query1,
$request->query->getInt('page', 1),
12,
[ 'pageParameterName' => 'pagination1']
);

    ...

      $pagination2 = $paginator->paginate(
        $query2,
        $request->query->getInt('page', 1),
        12,
          [ 'pageParameterName' => 'pagination2']
    );  

    '''
Trueman29los, il y a 2 ans

Merci beaucoup @Didier G mais votre code manque un peu d'instruction.
Remarque : Le nom du getter et du paramètre doit être le même comme ci-dessous.

$query1 = $entityManager->getRepository(Assurance::class)->findBy([ 'vehicle' => $vehicule->getId(), 'transporteur' => $transporteur->getId(), ], ['id' => 'DESC']); $pagination1 = $paginator->paginate( $query1, $request->query->getInt('pagination1', 1), 12, [ 'pageParameterName' => 'pagination1'] );