src/Controller/HomeController.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Newsletter;
  4. use App\Form\ContactType;
  5. use App\Form\NewsletterType;
  6. use App\Repository\NewsletterRepository;
  7. use App\Repository\PlanRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\Mime\Email;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Mailer\MailerInterface;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class HomeController extends AbstractController
  16. {
  17.     #[Route('/'name'app_home')]
  18.     public function index(
  19.         Request $request,
  20.         EntityManagerInterface $entityManager,
  21.         NewsletterRepository $newsletterRepository,
  22.         \MercurySeries\FlashyBundle\FlashyNotifier $flashy): Response
  23.     {
  24.         $formNewsletter $this->createForm(NewsletterType::class);
  25.         $formNewsletter->handleRequest($request);
  26.         if($formNewsletter->isSubmitted() && $formNewsletter->isValid()){
  27.             $email $formNewsletter->get('email')->getData();
  28.             $emailExist $newsletterRepository->findOneBy(['email' => $email]);
  29.             if($emailExist){
  30.                 $flashy->warning('Cet e-mail est déjà inscrit à la Newsletter.');
  31.                 return $this->redirectToRoute('app_home');
  32.             }else{
  33.                 $newsletterEmail = new Newsletter();
  34.                 $newsletterEmail->setEmail($email);
  35.     
  36.                 $entityManager->persist($newsletterEmail);
  37.                 $entityManager->flush();
  38.     
  39.                 $flashy->success('Vous avez été ajouté à la Newsletter !');
  40.     
  41.                 return $this->redirectToRoute('app_home');
  42.             }
  43.         } elseif ($formNewsletter->isSubmitted() && !$formNewsletter->isValid()) {
  44.             $flashy->error('Une erreur est survenue lors de l\'ajout à la Newsletter.');
  45.         }
  46.         return $this->render('home/index.html.twig', [
  47.             'controller_name' => 'HomeController',
  48.             'formNewsletter' => $formNewsletter->createView()
  49.         ]);
  50.     }
  51.     #[Route('/contact'name'app_contact')]
  52.     public function contact(
  53.         Request $request
  54.         MailerInterface $mailer,
  55.         \MercurySeries\FlashyBundle\FlashyNotifier $flashy): Response
  56.     {
  57.         $contactForm $this->createForm(ContactType::class);
  58.         $contactForm->handleRequest($request);
  59.         if ($contactForm->isSubmitted() && $contactForm->isValid()){
  60.             $data $contactForm->getData();
  61.             $mailAdress $data['email'];
  62.             $emailMessage $data['message'];
  63.             $email = (new Email())
  64.                 ->from($mailAdress)
  65.                 ->to('contact@voyageur-plus.fr')
  66.                 ->subject('Email reçu depuis la page contact')
  67.                 ->text($emailMessage);
  68.                 $mailer->send($email);
  69.                 // Utilisez Flashy pour afficher un message flash de succès
  70.                 $flashy->success('Votre email a bien été envoyé ✅ !');
  71.                 // Redirigez l'utilisateur vers la même page (rafraîchissement)
  72.                 return $this->redirectToRoute('app_contact');
  73.         }elseif ($contactForm->isSubmitted() && !$contactForm->isValid()) {
  74.             $flashy->error('Une erreur est survenue lors de l\'envoie du mail. Veuillez réessayer.');
  75.         }
  76.         return $this->render('contact/contact.html.twig', [
  77.             'controller_name' => 'HomeController',
  78.             'contactForm' => $contactForm->createView()
  79.         ]);
  80.     }
  81.     #[Route('/abonnement'name'abonnement')]
  82.     public function abonnement(PlanRepository $planRepository): Response
  83.     {
  84.         $plan $planRepository->findAll();
  85.         return $this->render('plan/plans.html.twig', [
  86.             'Plan' => $plan,
  87.             'controller_name' => 'ParametresUserController',
  88.         ]);
  89.     }
  90.     #[Route('/a-propos'name'about')]
  91.     public function about(): Response
  92.     {
  93.         return $this->render('about/aboutUs.html.twig', [
  94.             'controller_name' => 'ParametresUserController',
  95.         ]);
  96.     }
  97. }