src/Controller/Front/ContactController.php line 19

  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Entity\Front\Contact;
  4. use App\Form\Front\ContactType;
  5. use App\Repository\Front\ContactRepository;
  6. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Mailer\MailerInterface;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\Mime\Email;
  13. class ContactController extends AbstractController
  14. {
  15.     #[Route('/contact'name'app_front_contact'methods:["GET""POST"])]
  16.     public function index(
  17.         Request $request,
  18.         ContactRepository $contactRepository,
  19.         MailerInterface $mailer
  20.     ): Response {
  21.         $contact = new Contact();
  22.         $form $this->createForm(ContactType::class, $contact);
  23.         $form->handleRequest($request);
  24.         if ($form->isSubmitted() && $form->isValid()) {
  25.             $contact->setCreatedAt(new \DateTimeImmutable());
  26.             $contact->setSource('app_front_contact');
  27.             $contactRepository->save($contacttrue);
  28.             $email = (new TemplatedEmail())
  29.             ->to('notgoingtospam@founders-agency.com')
  30.             ->from($contact->getEmail())
  31.             ->subject('Consulta desde el sitio web')
  32.             ->htmlTemplate('front/contact/mail_template.html.twig')
  33.             ->context(['contact' => $contact]);
  34.             $mailer->send($email);
  35.             return $this->redirectToRoute('app_front_contact_thankyou');
  36.         }
  37.         return $this->render('front/contact/index.html.twig', [
  38.             'controller_name' => 'ContactController',
  39.             'form' => $form->createView(),
  40.         ]);
  41.     }
  42.     #[Route('/contact-thankyou'name'app_front_contact_thankyou'methods:["GET"])]
  43.     public function thankyou(): Response
  44.     {
  45.         return $this->render('front/contact/thankyou.html.twig', [
  46.             'controller_name' => 'ContactController',
  47.         ]);
  48.     }
  49. }