src/HomeBundle/Controller/ContactUsController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\HomeBundle\Controller;
  3. use App\BaseBundle\Controller\AbstractController;
  4. use App\BaseBundle\SystemConfiguration;
  5. use App\CMSBundle\Service\SiteSettingService;
  6. use App\HomeBundle\Form\ContactUsType;
  7. use PN\SeoBundle\Repository\SeoPageRepository;
  8. use PN\ServiceBundle\Service\SendEmailLaterService;
  9. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Mime\Address;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. /**
  15. * contactus controller.
  16. *
  17. * @Route("contact-us")
  18. */
  19. class ContactUsController extends AbstractController
  20. {
  21. /**
  22. * @Route("", name="fe_contact_index", methods={"GET", "POST"})
  23. */
  24. public function index(
  25. Request $request,
  26. SiteSettingService $siteSettingService,
  27. SendEmailLaterService $mailer,
  28. SeoPageRepository $seoPageRepository
  29. ): Response
  30. {
  31. // Create the form according to the FormType created previously.
  32. // And give the proper parameters
  33. $form = $this->createForm(ContactUsType::class, null, [
  34. 'method' => 'POST',
  35. ]);
  36. // Refill the fields in case the form is not valid.
  37. $form->handleRequest($request);
  38. if ($form->isSubmitted() && $form->isValid()) {
  39. // Send mail
  40. $data = $form->getData();
  41. $this->sendEmail($siteSettingService, $mailer, $data);
  42. return $this->redirectToRoute('fe_contact_thanks');
  43. }
  44. return $this->render('home/contact/index.html.twig', [
  45. 'seoPage' => $seoPageRepository->findOneByType("contact-us"),
  46. 'form' => $form->createView(),
  47. ]);
  48. }
  49. /**
  50. * @Route("/thanks", name="fe_contact_thanks", methods={"GET"})
  51. */
  52. public function thanks(
  53. SeoPageRepository $seoPageRepository
  54. ): Response
  55. {
  56. return $this->render('home/contact/thanks.html.twig', [
  57. 'seoPage' => $seoPageRepository->findOneByType("contact-us"),
  58. ]);
  59. }
  60. private function sendEmail(SiteSettingService $siteSettingService, SendEmailLaterService $mailer, array $data): void
  61. {
  62. $email = (new TemplatedEmail())
  63. ->from(new Address($siteSettingService->getByConstantName('email-from'), $siteSettingService->getByConstantName('website-title')))
  64. ->to(new Address($siteSettingService->getByConstantName('admin-email')))
  65. ->subject($siteSettingService->getByConstantName('website-title') . ' - contact us from ' . $data['name'])
  66. ->htmlTemplate('home/contact/adminEmail.html.twig')
  67. ->context([
  68. 'data' => $data,
  69. ]);
  70. $mailer->send($email);
  71. }
  72. }