Salut à tous,
J'aimerais mettre en place un moteur de recherche avec l'affichage d'un tableau contenant des données qui utilise la PAGINATION(important).
Ainsi la mise en place de mon moteur de recherche marche très bien et affiche bien les données en conséquence dans mon tableau.
Par contre le système de pagination que j'utilise (knp_paginator) ne va pas sauvegarder les valeurs de mon formulaire. Ainsi je suis obligé de passer
par des valeurs en session pour pouvoir reconstruire mon queryBuilder en rapport aux valeurs de recherche.
Néanmoins une fois tout ceci mis en place il me reste un problème que je n'arrive pas à résoudre, à savoir ré afficher les critères de recherche dans mon formulaire
quand j'utilise le système de pagination - tri ou page ou item par page - (ainsi je ne re-soumet pas mon formulaire) grâce à mes critères sauvegardés en session.
Les fonctions de pagination sont bien fonctionnelle par ailleurs et sur le données attendues.
Pourriez-vous m'aider à mettre ce système en place ?
J'essaie de passer des valeurs en session dans la construction de mon form à l'aide de l'option preferred_choices utilisé dans un champ de type entity.
voici la construction de mon form dans mon controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $searchForm = $this->createForm(new CqsProSansMarqueType(), $CqsProSansMarque, array( 'action' => $this->generateUrl('QualityPage_proSansMarque_search', array('maxItemsPerPage' => $maxItemsPerPage)), 'method' => 'POST', 'attr' => array('ray_libelle' => $CqsProSansMarque->getRayLibelle()), ));
voici la class de mon form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 class CqsProSansMarqueType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $defaultCQSsearch = new CqsProSansMarque(); // ladybug_dump($options['attr']); $defaultCQSsearch->setRayLibelle((!array_key_exists('ray_libelle', $options['attr'])) ? 'toto' : $options['attr']['ray_libelle']); $defaultCQSsearch->setFamLibelle((!array_key_exists('fam_libelle', $options['attr'])) ? null : $options['attr']['fam_libelle']); $defaultCQSsearch->setCaeLibelle((!array_key_exists('cae_libelle', $options['attr'])) ? null : $options['attr']['cae_libelle']); $em = $this->getDoctrine()->getManager(); $test = $em->getRepository('ApplicationDriveBundle:CqsProSansMarque')->find(5); ladybug_dump($test); // ladybug_dump($defaultCQSsearch); $builder ->add('ray_libelle', 'entity', array( 'class' => 'ApplicationDriveBundle:CqsProSansMarque', 'property' => 'ray_libelle', 'query_builder' => function(CqsProSansMarqueRepository $er){ return $er->createQueryBuilder('a') ->select('a') ->groupBy('a.ray_libelle'); }, 'preferred_choices' => array($defaultCQSsearch), 'label' => 'rayon', 'required' => false,
l'entity n'a pas de problème et j'ai bien validé que mes données en session sont présente et également dans ma class form.
Lorsque je passe autre chose qu'un objet dans un array pour l'option preferred_choices, symfony n'aime pas vraiment.
Ainsi je n'ai pas d'erreur retourné à proprement de Symfony mais je n'ai aucun affichage de mes valeurs en session (présente dans l'objet passé à l'options preferred_choices).
Merci de votre précieuse aide.
Partager