<?php
namespace App\EventSubscribers;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpFoundation\Cookie;
class LocaleSubscriber implements EventSubscriberInterface {
public function onKernelRequest(RequestEvent $event) {
$request = $event->getRequest();
if ($request->cookies->get('set_locale') && empty($request->get('set_locale'))) {
$request->setLocale($request->cookies->get('set_locale'));
} elseif (!empty($request->get('set_locale'))) {
$request->setLocale($request->get('set_locale'));
} else {
return;
}
}
public function onKernelResponse(ResponseEvent $event) {
$request = $event->getRequest();
if (!empty($request->get('set_locale')) && $request->get('set_locale') != $request->cookies->get('set_locale')) {
$event->getResponse()->headers->setCookie(new Cookie('set_locale', $event->getRequest()->get('set_locale'), time() + 2592000));
}
}
public static function getSubscribedEvents() {
return array(
KernelEvents::REQUEST => array(array('onKernelRequest', '17')),
KernelEvents::RESPONSE => array(array('onKernelResponse', '18'))
);
}
}