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


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',
));