src/Controller/LocaleController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Service\LocaleService;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. class LocaleController extends AbstractController
  9. {
  10.     private LocaleService $localeService;
  11.     public function __construct(LocaleService $localeService)
  12.     {
  13.         $this->localeService $localeService;
  14.     }
  15.     /**
  16.      * @Route("/locale/switch/{locale}", name="app_locale_switch", requirements={"locale"="fr|en"})
  17.      */
  18.     public function switchLocale(string $localeRequest $request): Response
  19.     {
  20.         // Valider que la locale est supportée
  21.         if (!in_array($locale, ['fr''en'])) {
  22.             throw $this->createNotFoundException('Locale not supported');
  23.         }
  24.         // Utiliser le service pour définir la locale
  25.         $this->localeService->setManualLocale($locale);
  26.         // Rediriger vers la page précédente
  27.         $referer $request->headers->get('referer');
  28.         if ($referer) {
  29.             return $this->redirect($referer);
  30.         }
  31.         return $this->redirectToRoute('home');
  32.     }
  33.     /**
  34.      * @Route("/locale/reset", name="app_locale_reset")
  35.      */
  36.     public function resetLocale(Request $request): Response
  37.     {
  38.         // Utiliser le service pour réinitialiser
  39.         $this->localeService->resetToAutoDetection();
  40.         
  41.         // Rediriger vers la page précédente
  42.         $referer $request->headers->get('referer');
  43.         if ($referer) {
  44.             return $this->redirect($referer);
  45.         }
  46.         return $this->redirectToRoute('home');
  47.     }
  48. }