Bonjour à tous,
Je voudrais que le champ 'service' qui est un select soit prérempli par l'id du service qui est récupéré par le controller ci-bas...
J'ai essayé d'injecter la variable directement dans les paramètres du "create form" , rien n'y fait...
D'autre part, mon formulaire n'envoie rien en bdd alors que la requête revient comme étant correcte...
Merci d'avance pour votre expertise
MailContactController.php :
ContactFormType.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 namespace App\Controller; use App\Form\ContactFormType; use App\Repository\ServicesRepository; use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Routing\Annotation\Route; #[Route('/contact-par-mail', name: 'app_contact_par_mail_')] class MailContactController extends AbstractController { #[Route('/envoyer-mail/{id}/{slug}', name: 'envoyer_mail')] public function envoyerMail($slug, MailerInterface $mailer, Request $request, ServicesRepository $servicesRepository, $id): Response { //Si l'on se trouve sur la page ou fiche d'un service $service_a_contacter = $servicesRepository->find($id); $idService = $service_a_contacter->getId(); //Recherche des adresses mails du service $mail1 = $service_a_contacter->getMailService1(); $placeholder = "Indiquez ici ce qui vous amène à nous contacter sans oublier vos coordonnées complète et les données du véhicule concerné."; $slug = $service_a_contacter->getSlug(); $form = $this->createForm(ContactFormType::class); $contact = $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $email = (new TemplatedEmail()) ->from($contact->get('email')->getData()) ->to($mail1) ->subject($contact->get('subject')->getData()) ->htmlTemplate('emails/contact_service.html.twig') ->context([ 'service' => $idService, 'mail' => $mail1, 'message' => $contact->get('message')->getData() ]); dd($email); $mailer->send($email); $this->addFlash('success', 'Le mail a bien été envoyé au service demandé, nous vous répondrons dans les meilleurs délais.'); return $this->redirectToRoute('app_index', [ 'slug' => $slug ]); } return $this->render('_partials/_modale-contact.html.twig', [ 'mail1' => $mail1, 'service' => $service_a_contacter, 'idService' => $idService, 'form' => $form->createView() ]); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 namespace App\Form; use App\Entity\Services; use FOS\CKEditorBundle\Form\Type\CKEditorType; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Validator\Constraints\NotNull; class ContactFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('service', EntityType::class, [ 'class' => Services::class, 'label' => 'Service contacté : ', ]) ->add('subject', TextType::class, [ 'label' => "Objet : ", 'constraints' => new NotBlank(), 'attr' => [ 'class' => 'form-control', 'placeholder' => 'Décrivez-ici votre demande' ], ]) ->add('email', EmailType::class, [ 'label' => 'Votre e-mail :', 'constraints' => new NotBlank(), 'attr' => ['class' => 'form-control', 'placeholder' => 'Votre email est obligatoire !'], ]) ->add('message', CKEditorType::class, [ 'label' => 'Votre message + coordonnées de contact + données du véhicule concerné : ', 'constraints' => new NotBlank(), 'attr' => ['class' => 'form-control'], ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ ]); } }
Partager