src/EventSubscribers/LocaleSubscriber.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscribers;
  3. use Symfony\Component\HttpKernel\KernelEvents;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  7. use Symfony\Component\HttpFoundation\Cookie;
  8. class LocaleSubscriber implements EventSubscriberInterface {
  9.     public function onKernelRequest(RequestEvent $event) {
  10.         $request $event->getRequest();
  11.         if ($request->cookies->get('set_locale') && empty($request->get('set_locale'))) {
  12.             $request->setLocale($request->cookies->get('set_locale'));
  13.         } elseif (!empty($request->get('set_locale'))) {
  14.             $request->setLocale($request->get('set_locale'));
  15.         } else {
  16.             return;
  17.         }
  18.     }
  19.     public function onKernelResponse(ResponseEvent $event) {
  20.         $request $event->getRequest();
  21.         if (!empty($request->get('set_locale')) && $request->get('set_locale') != $request->cookies->get('set_locale')) {
  22.             $event->getResponse()->headers->setCookie(new Cookie('set_locale'$event->getRequest()->get('set_locale'), time() + 2592000));
  23.         }
  24.     }
  25.     public static function getSubscribedEvents() {
  26.         return array(
  27.             KernelEvents::REQUEST => array(array('onKernelRequest''17')),
  28.             KernelEvents::RESPONSE => array(array('onKernelResponse''18'))
  29.         );
  30.     }
  31. }