Bonjour

Je cherche à créer plusieurs instances de la class User dans le même formulaire.
Dans le controller j'ai crée 3 variables et j'appelle 3 fois le form UserType.
Par contre lors de l'affichage je ne veux pas qu'à la fin de chaque form il y ait le bouton de validation
j'en veux un seul qui englobe tout.

J'ai pensé à créer un $form regroupant les form mais mon erreur provient justement du fait que le form soit un array
voici mon controller

    public function formulaire(Request $request, EntityManagerInterface $entityManagerInterface)
    {
        $user = new User();
        $pere = new User();
        $mere = new User();

        $formUser = $this->createForm(UserType::class, $user);
        $formPere = $this->createForm(UserType::class, $pere);
        $formMere = $this->createForm(UserType::class, $mere);

        $form = [$formUser, $formPere, $formMere];
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) 
        {
            $entityManagerInterface->persist($user);
            $entityManagerInterface->persist($pere);
            $entityManagerInterface->persist($mere);

            $entityManagerInterface->flush();
        }
        return $this->render('formulaire/index.html.twig', [
            'forms' => $form->createView(),
        ]);
    }
}

3 réponses


bonjour

Tu peux créer un formulaire avec trois champs de type user.

....

class UserFamilyType extends AbstractType {

        public fonction buildForm(FormBuilderInterface $builder, array $options)
        {
               $builder
                       ->add('user', UserType::class)
                       ->add('pere', UserType::class)
                       ->add('mere', UserType::class);
        }
}

Dans ton contrôleur tu fais ceci :

$form = $this->createForm(UserFamilyType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && ...) {

   $data = $form->getData();

   $em->persist($data['user']);
   $em->persist($data['pere']);
   $em->persist($data['mere']);

   $em->flush();
}
bldlr
Auteur

Bonjour et merci pour ta réponse,

Je viens de tester
j'ai une erreur lors du submit
Cannot use object of type App\Entity\Formulaire as array

(de base j'avais fais comme toi, une entity Formulaire non ORM avec user pere mere)

mais je ne comprends pas une chose, pourquoi dans le controller on n'a pas besoin de créer un new User ? il est bien envoyé en BDD ?

Bonjour
Peux tu fournir ton contrôleur ainsi que tes formulaires(UserType, UserFamiltyType), cela facilitera le guide.

Pour ta question le formulaire le fait pour toi.