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


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.

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

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.

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

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']
    );  

    '''

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']
        );