Formulaires imbriqués symfony 3

Par timri, il y a 7 ans


Bonjour,

Voilà j'ai un petit soucis et j'ai besoin de votre aide

Ce que je fais

J'ai 2 entités livrable et sprint. Pendant la création d'un livrable, l'utilisateur doit choisir son sprint et si le sprint n'existe pas, il doit pouvoir le créé. j'ai pensé à utiliser les formulaires imbriqués. pour l'instant il est possible de créé un sprint pendant la création d'un livrable mais pas de choisir un sprint existant

class Sprint { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) */ private $name;... Class Livrable { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) */ private $name; /** * @ORM\ManyToOne(targetEntity="App\MemberBundle\Entity\Sprint", cascade={"persist"}) * @ORM\JoinColumn(nullable=true) */ private $sprint; .... public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name') ->add('sprint', SprintType::class); }

J'ai besoin de votre aide please ...

1 réponse

Digivia, il y a 7 ans

Bonjour Richard,

En ajoutant

->add('sprint', SprintType::class);

Tu vas effectivement permettre la création d'un sprint en même temps que ton livrable.
Pour choisir un sprint existant, il te faut utiliser un FormType Entity, par exemple :

->add('sprint', EntityType::class, array( 'class' => Sprint::class, 'query_builder' => function (EntityRepository $er) { return $er->createQueryBuilder('s') ->orderBy('s.name', 'ASC'); }, 'choice_label' => 'name', ));