src/Controller/Front/ContactController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Form\ContactUsType;
  4. use App\Repository\FaqSubjectRepository;
  5. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  12. use Symfony\Component\Mailer\MailerInterface;
  13. use Symfony\Component\Mime\Address;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class ContactController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/contact", name="app_front_contact_page")
  19.      */
  20.     public function index(Request $requestFaqSubjectRepository $faqSubjectRepositoryMailerInterface $mailer): Response
  21.     {
  22.         $session $request->getSession();
  23.         $form $this->createForm(ContactUsType::class);
  24.         $form->handleRequest($request);
  25.         if ($form->isSubmitted() && $form->isValid()) {
  26.             $mail = (new TemplatedEmail())
  27.                 ->from(new Address($this->getParameter('cofina_sender_mail'), 'Cofina Mail Bot'))
  28.                 // ->addFrom(new Address($form->get('email')->getData(), $form->get('fullname')->getData()))
  29.                 ->to($this->getParameter('cofina_contact_recipient_mail'))
  30.                 ->subject($form->get('subject')->getData())
  31.                 ->htmlTemplate('front/pages/contact/email.html.twig')
  32.                 ->context([
  33.                     'fullname' => $form->get('fullname')->getData(),
  34.                     'message' => $form->get('message')->getData(),
  35.                     'senderEmail' => $form->get('email')->getData(),
  36.                 ])
  37.             ;
  38.             try {
  39.                 $mailer->send($mail);
  40.                 $this->addFlash('message_sent''Votre message a bien été envoyé');
  41.             } catch (TransportExceptionInterface $e) {
  42.                 $this->addFlash('message_no_sent'"Erreur survenue lors de l'envoi du message");
  43.                 // dump($e->getMessage()); die;
  44.             }
  45.             return $this->redirectToRoute('app_front_contact_page');
  46.         }
  47.         $filterForm $this->createFormBuilder();
  48.         $filterForm->add('searchWord'TextType::class, [
  49.             'label' => false,
  50.             'attr' => ['class' => 'form-control border border-start-0 opificio''placeholder' => 'Rechercher une question']
  51.         ]);
  52.         $filterForm $filterForm->getForm();
  53.         $filterForm->handleRequest($request);
  54.         if ($filterForm->isSubmitted() && $filterForm->isValid()) {
  55.             $searchWord $filterForm->get('searchWord')->getData();
  56.             if ($searchWord !== null$subjects $faqSubjectRepository->findByLike($searchWord);
  57.         } else $subjects $faqSubjectRepository->findAll();
  58.         $suscriberEmail $session->get('suscriber_email');
  59.         $session->remove('suscriber_email');
  60.         return $this->render('front/pages/contact/index.html.twig', [
  61.             'form' => $form->createView(),
  62.             'subjects' => $subjects,
  63.             'suscriberEmail' => $suscriberEmail,
  64.             'filterForm' => $filterForm->createView(),
  65.         ]);
  66.     }
  67.     /**
  68.      * @Route("/newsletter", name="app_front_contact_newsletter")
  69.      */
  70.     public function newsletter(Request $request) : Response {
  71.         $form $this->createFormBuilder()
  72.         ->setAction($this->generateUrl('app_front_contact_newsletter'))
  73.         ->add('email'EmailType::class, [
  74.             'attr' => [
  75.                 'class' => 'border-0 bg-transparent ms-3 text-white newsletter-email',
  76.                 'placeholder' => 'Ton adresse mail'
  77.             ]
  78.         ])->getForm();
  79.         $form->handleRequest($request);
  80.         if ($form->isSubmitted() && $form->isValid()) {
  81.             $session $request->getSession();
  82.             $session->set('suscriber_email'$form->get('email')->getData());
  83.             return $this->redirect($this->generateUrl('app_front_contact_page').'#contact-form'); 
  84.             // return $this->redirectToRoute('app_front_contact_page');
  85.         }
  86.         return $this->render('front/components/newsletter-block.html.twig', [
  87.             'form' => $form->createView()
  88.         ]);
  89.     }
  90. }