<?php
namespace App\EventSubscriber;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class RedirectLocale implements EventSubscriberInterface
{
public function __construct(
private RouterInterface $router
) {
}
public function onKernelController(RequestEvent $event): void
{
$routeName = $event->getRequest()->attributes->get('_route');
$newRoute = $routeName . '_no_locale';
if ($event->getRequest()->getLocale() == $event->getRequest()->getDefaultLocale() && $this->router->getRouteCollection()->get($newRoute) && strstr($event->getRequest()->getUri(), "/".$event->getRequest()->getDefaultLocale())) {
$newurl = str_replace("/".$event->getRequest()->getLocale(), "", $event->getRequest()->getUri());
$event->setResponse(new RedirectResponse($newurl, 301));
}
}
public static function getSubscribedEvents(): array
{
return [
'kernel.request' => 'onKernelController',
];
}
}