Rafraichir un formulaire enfant suite modif sur formulaire parent

Par Guillaume Ponty, il y a 9 ans


Bonjour,

Voilà, je rencontre un petit problème avec mon code.
J'aimerai mettre à jour les listes d'une collection suite à une modif du formulaire parent.
Par exemple :
J'ai un formulaire Pays quand on selectionne le pays cela affiche x lignes contenant 2 zones : Villes et nombre d'habitants. (on peut ajouter/supprimer des lignes dynamiquement)
A chaque changement de la liste pays, il faut que toutes les listes villes se mettent à jour.

Voici mon fomulaire parent (qui se trouve dans un fichier type :

$builder ->add('pays', EntityType::class, array( 'class' => 'AppBundle:Pays', 'choice_label' => 'nomPays' )) ->add('details', CollectionType::class, array( 'entry_type' => PaysDetailType::class, 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false ));

Mon formulaire details (qui se trouve dans un autre fichier type) :

$builder ->add('ville', EntityType::class, array( 'class' => 'AppBundle:Ville', 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('u') ->where('u.pays = :pays') ->setParameters('pays', $pays) ->orderBy('u.nomVille', 'ASC'); }, 'placeholder' => 'Veuillez choisir une ville', 'choice_label' => 'nomTache' )) ->add('habitants', TextType::class)

J'ai bien essayé de mettre un eventListener sur le parent Pays :

$builder->get('pays')->addEventListener( FormEvents::POST_SUBMIT, function (FormEvent $event) use ($formModifier) { $pays = $event->getForm()->getData(); $formModifier($event->getForm()->getParent(), $pays); } );

Mais où mettre ça : formModifier(event->getForm()->getParent(), $pays);
comment acceder au formulaire enfant depuis le parent et vice-versa ?

Merci!

Aucune réponse