src/Controller/ContactController.php line 20

  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactFormType;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\File\UploadedFile;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Component\Mime\Address;
  10. use Symfony\Component\Mime\Email;
  11. use Symfony\Component\Mime\Part\DataPart;
  12. use Symfony\Component\Mime\Part\File;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class ContactController extends AbstractController
  15. {
  16.     #[Route('/contact'name'contact')]
  17.     public function index(Request $requestMailerInterface $mailer): Response
  18.     {
  19.         $form $this->createForm(ContactFormType::class);
  20.         $form->handleRequest($request);
  21.         /*        if ($form->isSubmitted()){
  22.                     $attachmentFiles = $form->get('attachment')->getData();
  23.                     foreach ($attachmentFiles as $file) {
  24.                         if ($file instanceof UploadedFile) {
  25.                             dump($file->getPathname());
  26.                         }
  27.                     }
  28.                 }*/
  29.         if ($form->isSubmitted() && $form->isValid()) {
  30.             $contactFormData $form->getData();
  31.             $attachmentFiles $form->get('attachment')->getData();
  32.             $email = (new Email())
  33.                 ->from(new Address($_ENV['EMAIL'], 'MOPO - Formulaire de contact'))
  34.                 ->to($_ENV['EMAIL'])
  35.                 ->subject($contactFormData['subject'])
  36.                 ->text("Prénom: {$contactFormData['name']}\nNom:{$contactFormData['surname']}\nAdresse email: {$contactFormData['email']}\nNuméro de téléphone: {$contactFormData['telephone']}\n\n{$contactFormData['message']}")
  37.                 ->html("<p><strong>Prénom:</strong> {$contactFormData['name']}</p><p><strong>Nom:</strong> {$contactFormData['surname']}</p><p><strong>Adresse email:</strong> {$contactFormData['email']}</p><p><strong>Numéro de téléphone:</strong> {$contactFormData['telephone']}</p><p>{$contactFormData['message']}</p>")
  38.                 ->replyTo($contactFormData['email']);
  39.             foreach ($attachmentFiles as $file) {
  40.                 if ($file instanceof UploadedFile) {
  41.                     $email->addPart(new DataPart(
  42.                         fopen($file->getPathname(), 'r'),
  43.                         $file->getClientOriginalName(),
  44.                         $file->getMimeType()
  45.                     ));
  46.                 }
  47.             }
  48.             $mailer->send($email);
  49.             return $this->redirectToRoute('contact_confirmation');
  50.         }
  51.         return $this->render('contact/contact.html.twig', [
  52.             'controller_name' => 'ContactController',
  53.             'form' => $form->createView(),
  54.         ]);
  55.     }
  56.     #[Route('/contact/confirmation'name'contact_confirmation')]
  57.     public function confirmation(): Response
  58.     {
  59.         return $this->render('contact/contact_confirmation.html.twig', [
  60.             'controller_name' => 'ContactController',
  61.         ]);
  62.     }
  63. }