<?php
namespace App\Subscribers;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\RequestEvent;
class LocaleSubscriber implements EventSubscriberInterface
{
/**
* @param RequestEvent $event
* @return void
*/
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
// If locale parameter has been sent in POST (from BO parameters), update session with it
$locale = $request->getMethod() === "POST" && isset($request->request->get('user')['locale']) ? $request->request->get('user')['locale'] : false;
if ($locale) $request->getSession()->set('_locale', $locale);
$request->setLocale($request->getSession()->get('_locale', 'fr'));
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => [
['onKernelRequest', 20]
]
];
}
}