src/Controller/MainController.php line 18

  1. <?php
  2. namespace Cms\Controller;
  3. use Cms\Contact\ContactDto;
  4. use Cms\Contact\ContactMailer;
  5. use Cms\Form\ContactType;
  6. use Cms\Repository\PostRepository;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. class MainController extends AbstractController
  13. {
  14.     #[Route(''name'cms_main_index'methods: ['GET'])]
  15.     public function index(PostRepository $postRepository): Response
  16.     {
  17.         $lastPost $postRepository->findOneBy(['published' => true'deleted' => false], ['publishedAt' => 'DESC']);
  18.         return $this->render('main/index.html.twig', [
  19.                 'lastPost' => $lastPost,
  20.             ])
  21.             ->setSharedMaxAge(3600);
  22.     }
  23.     #[Route('/contact'name'cms_main_contact'methods: ['GET''POST'])]
  24.     public function contact(Request $requestContactMailer $mailerTranslatorInterface $translator): Response
  25.     {
  26.         $dto = new ContactDto();
  27.         $form $this->createForm(ContactType::class, $dto);
  28.         $form->handleRequest($request);
  29.         if ($form->isSubmitted() && $form->isValid()) {
  30.             $dto->setCreatedAt(new \DateTimeImmutable());
  31.             $sent $mailer->sendMail($dto);
  32.             [$level$message] = match ($sent) {
  33.                 true => ['success'$translator->trans('Merci, votre mesage a bien été envoyé.')],
  34.                 false => ['error'$translator->trans("Une erreur s'est produite, veuillez réessayer.")],
  35.             };
  36.             $this->addFlash($level$message);
  37.             return $this->render('main/contact/confirmation_sent.frame.html.twig');
  38.         }
  39.         return $this->render('main/contact.html.twig', [
  40.             'form' => $form,
  41.         ]);
  42.     }
  43. }