J'essaye de faire un formulaire imbriqué. Je suis le tutoriel sur le site.
Mon BDD ressemble beaucoup à ce qui est fait sur le site. j'ai une entité sport qui a plusieurs ligues (leagues) et qui a plusieurs équipes.
Je ne suis pas encore à gerer l'apparition des inputs avec AJAX.
J'essaye de le faire avec du PHP.

Je n'arrive pas à afficher de nouvel input. La page se recharge mais rien ne se passe.

Je veux créer une équipe.
MOn entité sport exite et mon entité ligue lié au sport l'est également.

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('sport', EntityType::class, array(
      'class'=> 'AppBundle\Entity\Sport',
      'choice_label'=>'libelle',
      'expanded'=>false,
      'multiple'=>false,
       'mapped'=> false,
      'attr' => array('class' => 'form-control') ))

        ->add('save', SubmitType::class, array('label'=> 'envoyer','attr' =>array('class' => 'btn btn-default')));

$builder->get('sport')->addEventListener(
  FormEvents::POST_SUBMIT,
  function (FormEvent $event) {
    $form = $event->getForm();
    $this->addLeagueField($form->getParent(), $form->getData());
  }
);

    }

private function addLeagueField(FormInterface $form, $sport)
{
  $builder = $form->getConfig()->getFormFactory()->createNamedBuilder(
    'league',
    EntityType::class,
    null,
    [
      'class'           => 'AppBundle\Entity\League',
      'placeholder'     => $sport ? 'Sélectionnez votre département' : 'Sélectionnez votre région',
      'mapped'          => false,
      'required'        => false,
      'auto_initialize' => false,
      'choices'         => $sport ? $sport->getLeagues() : []
    ]
  );

  $form->add($builder->getForm());
}

2 réponses


Salut,
Va faire un tour du côté du collectionType. Et il y a un tuto sur openclassroom avec un code jquery pour faire apparaître des champs ;)

Des CollectionType?