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!