Bonjour à tous,
Je cherche à faire un formulaire dynamique en Symfony. Pour faire court, quand on sélectionne un élément dans un menu déroulant, ça nous nous sort des propositions qui corresponde à ce que l'on a sélectionné. J'ai suivi la documentation de Symfony : https://symfony.com/doc/current/form/dynamic_form_modification.html
Mon formulaire :
$formModifier = function (FormInterface $form, Competences $competences = null) {
$collaborateurs = null === $competences ? [] : $competences->getCompetencesCollaborateurs();
$form->add('collaborateurs', EntityType::class, [
'class' => Collaborateurs::class,
'placeholder' => 'Sélectionner un/des collaborateur(s)',
'choice_label' => 'prenom',
'choices' => $collaborateurs,
]);
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event) use ($formModifier) {
$data = $event->getData();
$formModifier($event->getForm(), $data->getCompetences());
}
);
$builder->get('competences')->addEventListener(
FormEvents::POST_SUBMIT,
function (FormEvent $event) use ($formModifier) {
$competences = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $competences);
}
);
}
Mon Jquery dans mon fichier .html.twig :
{% block javascripts %}
<script>
var $competence = $('#projet_competences');
$competence.change(function () {
var $form = $(this).closest('form');
var data = {};
data[$competence.attr('id')] = $competence.val();
console.log(data);
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: data,
complete: function (html) {
$('#projet_collaborateurs').replaceWith(
$(html.responseText).find('#projet_collaborateurs')
);
}
});
});
</script>
{% endblock %}
Dans mon 1er menu déroulant, je dois choisir une compétence (compétences qui sont rentrés en base de donnée) et en fonction de la compétence choisit ça me sort les collaborateurs correspondant à la compétence. J'ai une relation ManyToMany entre mes collaborateurs et mes compétences.
Avec le code que je vous ai fourni, j'arrive à récupérer l'ID de la compétence dans ma console mais ça ne veut pas me proposer les collaborateurs liés à la compétence dans mon menu déroulant. Ma table qui fait le lien entre mes collaborateurs et mes compétences est rempli et chacun des collaborateurs à bien une ou plusieurs compétences liées.
Pour informations, je n'ai aucune erreur.
Si je poste ce sujet c'est que je n'ai rien trouvé pour régler mon problème, je sais qu'il y a une vidéo sur Grafikart concernant les champs imbriqués en Symfony mais il ne le fait pas en relation ManyToMany et c'est là où est mon problème.
Merci d'avance pour le temps accordé à mon problème en espérant avoir été assez clair.