src/Controller/ContactController.php line 19

  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactFormType;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use Symfony\Component\Mime\Address;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use Flasher\Toastr\Prime\ToastrFactory;
  12. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  13. class ContactController extends AbstractController
  14. {
  15.     #[Route('/{_locale<%app.supported_locales%>}/contact/'name'app_contact'options: ['sitemap' => true])]
  16.     public function index(Request $requestMailerInterface $mailerToastrFactory $toastr): Response
  17.     {
  18.         $contact = [];
  19.         $form $this->createForm(ContactFormType::class, $contact);
  20.         $form->handleRequest($request);
  21.     
  22.         if($form->isSubmitted() and $form->isValid()){
  23.             $contact $form->getData();
  24.             $email = (new TemplatedEmail())
  25.                 ->from('no-reply@bbcs-ovh.com')
  26.                 ->to(new Address('info@bbcs.be'))
  27.                 ->subject('bbcs.be - Formulaire de contact')
  28.                 ->htmlTemplate('mail/contact_form.html.twig')
  29.                 ->context([
  30.                     'contact' => $contact
  31.                 ])
  32.             ;
  33.             try {
  34.                 $mailer->send($email);
  35.                 
  36.                 $toastr
  37.                     ->success('<strong>Nous avons bien reçu votre demande! Nous y répondrons dans les meilleurs délais.</strong>')
  38.                     ->timeOut(5000)
  39.                     ->progressBar()
  40.                     ->closeButton()
  41.                     ->positionClass('toast-top-center')
  42.                     ->flash()
  43.                 ;
  44.                 return $this->redirectToRoute('app_home');
  45.             } catch (TransportExceptionInterface $e) {
  46.                 echo $e->getMessage();
  47.             }
  48.             return $this->redirectToRoute('app_contact', [], Response::HTTP_SEE_OTHER);
  49.         }
  50.         return $this->render('contact/index.html.twig', [
  51.             'form' => $form->createView(),
  52.             'active_menu' => 'contact'
  53.         ]);
  54.     }
  55. }