src/Controller/ContactController.php line 69

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use App\Controller\AbstractController;
  5. use App\Entity\Mail;
  6. use App\Model\ContactModel;
  7. use App\Form\ContactType;
  8. use ReCaptcha\ReCaptcha;
  9. use App\Misc\Flashes;
  10. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  11. use Symfony\Component\Mime\Address;
  12. class ContactController extends AbstractController
  13. {
  14. public function contact(Request $request)
  15. {
  16. $contact = new ContactModel();
  17. $form = $this->createForm(ContactType::class, $contact);
  18. $captchaError = false;
  19. if ($request->getMethod() === 'POST') {
  20. $recaptcha = new ReCaptcha($this->getParameter('google_recaptcha_private_key'));
  21. $resp = $recaptcha->verify($request->request->get('g-recaptcha-response'), $request->getClientIp());
  22. $form->handleRequest($request);
  23. if ($resp->isSuccess()) {
  24. if ($form->isValid()) {
  25. // notify admin with request and link to presta page
  26. // $mail = new Mail();
  27. // $mail
  28. // ->setFromEmail($this->getParameter('email_from'))
  29. // ->setFromName($this->getParameter('name_from'))
  30. // ->setToEmail($this->getParameter('admin_email'))
  31. // ->setSubject('Nouveau message depuis le formulaire de contact')
  32. // ->setContent($this->render('Email/contact.html.twig', [
  33. // 'contact' => $contact,
  34. // ]))
  35. // ->setStatus('new');
  36. // $this->getEM()->persist($mail);
  37. // $this->getEM()->flush();
  38. $email = (new TemplatedEmail())
  39. ->from(new Address($this->getParameter('email_from'), $this->getParameter('name_from')))
  40. ->to(new Address($this->getParameter('admin_email')))
  41. ->subject('Nouveau message depuis le formulaire de contact')
  42. ->htmlTemplate('Email/contact.html.twig')
  43. ->context(
  44. [
  45. 'contact' => $contact,
  46. ]
  47. );
  48. $this->getMailer()->send($email);
  49. $this->addFlash(Flashes::SUCCESS, 'Votre demande a été envoyée.');
  50. // return $this->redirectToRoute('public_index');
  51. } else {
  52. $this->addFlash(Flashes::ERROR, 'Votre formulaire comporte des erreurs.');
  53. }
  54. } else {
  55. $this->addFlash(Flashes::ERROR, 'Votre formulaire comporte des erreurs.');
  56. $captchaError = true;
  57. }
  58. }
  59. return $this->render('Public/contact.html.twig', array(
  60. 'contact_form' => $form->createView(),
  61. 'captcha_error' => $captchaError
  62. ));
  63. }
  64. }