Bonjour les amis

Je me résigne à venir à vous car je rencontre un problème avec un formulaire.

Ce que j'ai :

Voilà j'ai un formulaire ProfilType (Qui est un formulaire parent)

Et un formulaire LanguesParlesAuxEnfantsType (Qui est un formulaire enfant)

Ce que je veux :

Je souhaite que lorsque je créer une entrée Profil dans la BDD, que je puisse créer aussi dans la foulé l'entrée LanguesParlesAuxEnfants correspondante

Ainsi j'ai un formulaire imbriqué.

Ce que me donne actuellement mon code :

Mon formulaire m'affiche correctement tous les champs SAUF pour le champs où je de dois remplir les languesParlesAuxEnfants et je n'ai pas liste pour pouvoir sélectionner les langues (Pour information : Une langue = Une formation)

Voici mon code

LanguesParlesAuxEnfantsType

<?php

namespace App\Form;

use App\Entity\LanguesParlesAuxEnfants;
use App\Entity\Profil;
use App\Entity\Formation;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

class LanguesParlesAuxEnfantsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('formation', EntityType::class,[
                'class'=>Formation::class,
                'choice_label'=>'nom'
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => LanguesParlesAuxEnfants::class,
        ]);
    }
}

ProfilType

use Symfony\Component\Form\Extension\Core\Type\CollectionType;

->add('languesParlesAuxEnfants', CollectionType::class,[
                'entry_type' => LanguesParlesAuxEnfantsType::class,
                'entry_options' => ['label' => true, 'attr' => [
                    'class' => 'col-md-8']
                ],
                'label' => false,
                'allow_add' => true,
                'by_reference' => false,
                'allow_delete' => true,
            ])

ProfilController :

public function newProfil(Request $request)
{

    $user = $this->getUser();

    $profil = new Profil();

    $languesParlesAuxEnfants = new LanguesParlesAuxEnfants;
    $languesParlesParEnfants = new LanguesParlesParEnfants;

    $languesParlesAuxEnfants->setProfil($profil);
    $languesParlesParEnfants->setProfil($profil);

    $profil->getLanguesParlesAuxEnfants('languesParlesAuxEnfants');
    $profil->getLanguesParlesParEnfants('languesParlesParEnfants');

    /* Edit profil info */
    $form = $this->createForm(ProfilType::class, $profil);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {

        $em = $this->getDoctrine()->getManager();

        $profil->setUser($user);

        $em->persist($profil);
        $em->flush();

        $this->addFlash('success','Votre profil a bien été enregistré');
        return $this->redirectToRoute('profils');
    }

Et enfin la vue

<div class="col-md-6 col-sm-12">
  <h3> Langues parlés aux enfants</h3>
  {% for lpae in form.languesParlesAuxEnfants %}
    {{ form_row(lpae.formation) }}
  {% endfor %}
</div>

Aucune réponse