src/EventSubscriber/HomeLocaleRedirectSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. final class HomeLocaleRedirectSubscriber implements EventSubscriberInterface
  8. {
  9.     private const LEGACY_PAGE_REDIRECTS = [
  10.         '/mentions-legales' => '/conditions-generales-de-vente',
  11.         '/confidentialite' => '/politique-de-confidentialite',
  12.     ];
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         // Run early so /en never reaches Sulu content routing.
  16.         return [
  17.             KernelEvents::REQUEST => ['onKernelRequest'2048],
  18.         ];
  19.     }
  20.     public function onKernelRequest(RequestEvent $event): void
  21.     {
  22.         if (!$event->isMainRequest()) {
  23.             return;
  24.         }
  25.         $request $event->getRequest();
  26.         $path rtrim($request->getPathInfo(), '/');
  27.         if ('' === $path) {
  28.             $path '/';
  29.         }
  30.         if ($path === '/en') {
  31.             $target '/';
  32.             $query $request->getQueryString();
  33.             if ($query) {
  34.                 $target .= '?' $query;
  35.             }
  36.             $event->setResponse(new RedirectResponse($target301));
  37.             return;
  38.         }
  39.         if (isset(self::LEGACY_PAGE_REDIRECTS[$path])) {
  40.             $target self::LEGACY_PAGE_REDIRECTS[$path];
  41.             $query $request->getQueryString();
  42.             if ($query) {
  43.                 $target .= '?' $query;
  44.             }
  45.             $event->setResponse(new RedirectResponse($target301));
  46.         }
  47.     }
  48. }