src/Controller/HomeController.php line 65

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use App\Entity\NewsletterSubscription;
  8. use App\Form\NewsletterSubscriptionType;
  9. use App\Repository\NewsletterSubscriptionRepository;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. class HomeController extends AbstractController
  12. {
  13.     #[Route('/news/letter'name'app_souscription_new_letter')]
  14.     public function appSouscriptionNewLetter(Request $requestNewsletterSubscriptionRepository $subscriptionRepositoryEntityManagerInterface $entityManager): Response
  15.     {
  16.                 if ($request->request->count() > 0) {
  17.                        $newsletter trim($request->request->get("newsletter"));
  18.                        // Vérifier si l'email est déjà abonné
  19.                        if (strlen($newsletter) == 0) {
  20.                         // Si l'email existe déjà, afficher un message d'erreur
  21.                         $this->addFlash('warning''Veuillez saisir votre adresse email.');
  22.                         // Rediriger vers la même page pour que le message soit affiché
  23.                         return $this->redirectToRoute('app_home');
  24.                     }
  25.                        $existingSubscription $subscriptionRepository->findOneBy(['email' => $newsletter]);
  26.                        if ($existingSubscription) {
  27.                            // Si l'email existe déjà, afficher un message d'erreur
  28.                            $this->addFlash('warning''Vous êtes déjà abonné à notre newsletter avec cet email.');
  29.    
  30.                            // Rediriger vers la même page pour que le message soit affiché
  31.                            return $this->redirectToRoute('app_home');
  32.    
  33.                        }
  34.                        // Sauvegarder l'abonnement dans la base de données
  35.                        $subscription = new NewsletterSubscription();
  36.                        $subscription->setEmail($newsletter);
  37.                        $subscription->setSubscribedAt(new \DateTime());
  38.                       // $entityManager = $this->getDoctrine()->getManager();
  39.                        $entityManager->persist($subscription);
  40.                        $entityManager->flush();
  41.                        // Rediriger avec un message de succès
  42.                        $this->addFlash('success''Merci pour votre abonnement à la newsletter !');
  43.            
  44.                        // Rediriger vers une page de confirmation ou la même page
  45.                        return $this->redirectToRoute('app_home');
  46.                 }
  47.                 return $this->redirectToRoute('app_home');
  48.     }
  49.     #[Route('/'name'app_home')]
  50.     public function index(Request $requestNewsletterSubscriptionRepository $subscriptionRepositoryEntityManagerInterface $entityManager): Response
  51.     {
  52.                 
  53.         $currentYear = (new \DateTime())->format('Y');
  54.         $startYear 1988;
  55.         $experienceYears $currentYear $startYear;
  56.         return $this->render('home/index.html.twig', [
  57.             'controller_name' => 'HomeController',
  58.             'experienceYears' => $experienceYears,
  59.         ]);
  60.     }
  61. }