Bonjour,

Voila je rencontre un petit problème avec mon code.

j'ai suivi ce tuto https://www.youtube.com/watch?v=F0Z-D3MSjA0
j'ai essayé de l'appliquer dans mon projet maisle deuxieme champs ne s'affiche pas (champs equipe)
voici mon code

namespace App\Form;

use App\Entity\Saison;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use App\Entity\Competition;
use App\Entity\Equipe;

class SaisonType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nom')
            ->add('dateDebut', DateType::class)
            ->add('dateFin', DateType::class)
            ->add('etat')
            ->add('competition', EntityType::class, ['class' => Competition::class, 'placeholder' => 'Selectionner une competition', 'mapped' => false, 'required' => true, 'choice_label' => 'nom',])
            //->add('equipes', EntityType::class, ['class' => Equipe::class, 'choice_label' => 'nom', 'multiple' => true, 'expanded' => false])

            ->add('save', SubmitType::class)    
        ;
        $builder->get('competition')->addEventListener(
                FormEvents::POST_SUBMIT,
                function(FormEvent $event){
                  $form = $event->getForm();
                  $com = $form->getData();
                  $pays = $com->getPays();
                  $form->add('equipes', EntityType::class, 
                          ['class' => Equipe::class, 
                           'choice_label' => 'nom', 
                           'multiple' => true, 'expanded' => false,
                           'query_builder' => function(EquipeRepository $repo) use($pays){
                              return $repo->getEquipePays($pays);
                           }]);

                }
                );

    }

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

je veux svoir pourquoi le champs equipe ne s'affiche pas et comment resoudre ce probleme
merci d'avance

5 réponses


Salut houssem, peut tu nous montré ta vue(twig) ?

houssem
Auteur

salut j'ai pas fait grand chose dans ma vue mais voici le code

{% extends "base.html.twig" %}
{% block body %}
    <div class = 'text-center'>
        ajouter une saison
    </div>
    <div class ="well">
     {{ form(form) }}
    </div>
{% endblock %}

le problème vient peut être de ton controlleur ya moyen que tu le montre aussi ?

Est ce que tu as déja des équipe de créer ?

houssem
Auteur

oui j'ai cree des equipes et voici le controlleur

class SaisonController extends AbstractController
{

  /**
   * @Route("/saison/add",  name = "sp_saison_add")
   */
  public function add(Request $req)
  {
      $saison = new Saison();
      $form = $this->createForm(SaisonType::class, $saison);
      $form->handleRequest($req);
      if($form->isSubmitted() && $form->isValid())
      {
        $em = $this->getDoctrine()->getManager();
        $em->persist($saison);
        $em->flush();
        $req->getSession()->getFlashBag()->add('notice', 'Saison bien enregistrée.');
        return $this->redirectToRoute('sp_saison_view', ['id' => $saison->getId()]);

      }
      return $this->render('Saison\addSaison.html.twig', ['form' => $form->createView()]);
  }