src/Controller/Front/ContactController.php line 47

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  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\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Component\Mime\Address;
  11. use App\Repository\Banner\BannerRepository;
  12. use App\Form\Contact\ContactType;
  13. class ContactController extends AbstractController
  14. {
  15.     /** @var BannerRepository */
  16.     private $bannerRepository;
  17.     /** @var MailerInterface */
  18.     private $mailer;
  19.     /** @var Session */
  20.     private $session;
  21.     /** @var TranslatorInterface */
  22.     private $translator;
  23.     /** @var string */
  24.     private $theme;
  25.     /**
  26.      * @param BannerRepository $bannerRepository
  27.      * @param Session $session
  28.      */
  29.     public function __construct(
  30.         BannerRepository $bannerRepository,
  31.         MailerInterface $mailer,
  32.         SessionInterface $session,
  33.         TranslatorInterface $translator
  34.     ) {
  35.         $this->bannerRepository $bannerRepository;
  36.         $this->mailer $mailer;
  37.         $this->session $session;
  38.         $this->translator $translator;
  39.         $this->theme $this->session->get('theme''horse');
  40.     }
  41.     public function index(Request $request): Response
  42.     {
  43.         $contactMail $this->getParameter('contact_email');
  44.         $banner $this->bannerRepository->findOneBy(['type' => $this->theme]);
  45.         $form $this->createForm(ContactType::class);
  46.         $form->handleRequest($request);
  47.         if ($form->isSubmitted() && $form->isValid()) {
  48.             $data $form->getData();
  49.             extract($data);
  50.             $templatedEmail = new TemplatedEmail();
  51.             $from = new Address($contactMail'Ranch Family Horse');
  52.             $emailSubject $this->translator->trans('app.contact.email.subject');
  53.             $email $templatedEmail->from($from)
  54.                 ->to($contactMail)
  55.                 ->subject($emailSubject)
  56.                 ->htmlTemplate('front/contact/mail.html.twig')
  57.                 ->context(compact('name''contactEmail''subject''message''contactMail'));
  58.             $this->mailer->send($email);
  59.             $this->session->getFlashBag()->add('success'$this->translator->trans('app.contact.messages.sent'));
  60.         }
  61.         $contactForm $form->createView();
  62.         return $this->render('front/contact/index.html.twig'compact('contactForm''banner'));
  63.     }
  64. }