Bonjour à tous, je rencontre un petit problème (étant apprenant) dans mon projet, je m'explique:

J'ai une entité Appointment et une entité Services,
Appointment contient une collection de services et vice versa liés d'une relation ManytoMany.

Dans mon formulaire de prise de RDV je souhaiterais faire apparaitre les services que nous fournissons avec des checkbox, pour l'affichage ce n'est pas un problème.
Mon soucis est le suivant: si j'utilise un EntityType rien ne se passe dans ma table associative et si j'utilise un CollectionType alors le service selectionné se créé et s'ajoute dans ma base de donnée au lieu de simplement lié le ou les services selectionnés au RDV, je bute depuis un moment sur le problème n'arrivant pas à créer une methode.

Donc en soit mon RDV s'ajout bien à ma table appointment, mais les services selectionnés eux ne s'associe pas au RDV pris.
Je viens donc vers vous, peut-être pourriez vous me guider... :)

Voilà la méthode de mon controller:

#[Route('/home/appointment', name: 'app_appointment')]
public function addAppointment(Request $request, EntityManagerInterface $entityManager): Response
{
    $appointment = new Appointment();
    $form = $this->createForm(AppointmentType::class, $appointment);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        // Associer les services sélectionnés à l'entité Appointment
        foreach ($appointment->getServices() as $service) {
            $appointment->addService($service);
        }

        // Persister et flusher l'entité Appointment
        $entityManager->persist($appointment);
        $entityManager->flush();

        // Rediriger ou afficher un message de succès
        $this->addFlash('success', 'Votre rendez-vous a été enregistré avec succès.');
        return $this->redirectToRoute('app_home');
    }

    return $this->render('home/appointment.html.twig', [
        'form' => $form->createView(),
    ]);
}

et voici une partie du form appointment:
            // ->add('services', EntityType::class, [
            //     'class' => Service::class,
            //     // 'choice_label' => 'serviceName',
            //     'multiple' => true,
            //     'expanded' => true
            // ])
            // ->add('serviceId', HiddenType::class, [
            //     'mapped' => false
            // ])
            ->add('services', CollectionType::class, [
                'entry_type' => ServiceType::class,
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false,
                'entry_options' => ['label' => false],
            ])

1 réponse


salut,
essayes d'ajouter 'by_reference' => false, a EntityType


->add('services', EntityType::class, [
        'class' => Service::class,
        'choice_label' => 'serviceName',
        'multiple' => true,
        'by_reference' => false,
        'expanded' => true
        ])