src/Controller/AccueilController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Mailer\MailerInterface;
  7. use Symfony\Component\Mime\Email;
  8. use Symfony\Component\Mime\Address;
  9. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use App\Form\ContactFormType;
  12. class AccueilController extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/{_locale}", name="app_accueil", requirements={"_locale": "en|fr"}, defaults={"_locale": "fr"})
  16.      * @Route("/", name="app_accueil_default")
  17.      */
  18.     public function index(Request $requestMailerInterface $mailerstring $_locale 'fr'): Response
  19.     {
  20.         // Si on accède via la route par défaut sans locale, rediriger vers la locale par défaut
  21.         if ($request->attributes->get('_route') === 'app_accueil_default') {
  22.             $session $request->getSession();
  23.             $locale $session->get('_locale''fr');
  24.             return $this->redirectToRoute('app_accueil', ['_locale' => $locale], 301);
  25.         }
  26.         // Créer un formulaire vide
  27.         $form $this->createForm(ContactFormType::class);
  28.         $form->handleRequest($request);
  29.         if ($form->isSubmitted() && $form->isValid()) {
  30.             $data $form->getData();
  31.             // Envoyer l'email
  32.             $email = (new Email())
  33.                 ->from($data['email'])
  34.                 ->to('commercial@matchnhire.com')
  35.                 ->subject('Nouveau message de contact depuis MatchnHire')
  36.                 ->html(
  37.                     $this->renderView(
  38.                         'emails/contact.html.twig',
  39.                         ['data' => $data]
  40.                     )
  41.                 );
  42.             $mailer->send($email);
  43.             // Ajouter un message flash et rediriger
  44.             $this->addFlash('success'$this->trans('form.success_message'));
  45.             return $this->redirectToRoute('app_accueil', ['_locale' => $_locale]);
  46.         }
  47.         return $this->render('accueil/index.html.twig', [
  48.             'form' => $form->createView(),
  49.         ]);
  50.     }
  51. }