src/EventSubscriber/LocaleSubscriber.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. /**
  8.  * Class LocaleSubscriber
  9.  * @package App\EventSubscriber
  10.  */
  11. class LocaleSubscriber implements EventSubscriberInterface
  12. {
  13.     /**
  14.      * @var string
  15.      */
  16.     private $defaultLocale 'fr';
  17.     /**
  18.      * @param RequestEvent $event
  19.      */
  20.     public function onKernelRequest(RequestEvent $event)
  21.     {
  22.         $request $event->getRequest();
  23.         if (!$request->hasPreviousSession()) {
  24.             return;
  25.         }
  26.         /* @var $session SessionInterface */
  27.         $session $request->getSession();
  28.         $current_locale $this->defaultLocale;
  29.         if($request->getSession()->has('_locale')) {
  30.             $current_locale $request->getSession()->get('_locale');
  31.         }
  32.         $request->getSession()->set('_locale'$current_locale);
  33.         $request->setLocale($current_locale);
  34.     }
  35.     /**
  36.      * @return array|\array[][]
  37.      */
  38.     public static function getSubscribedEvents()
  39.     {
  40.         return [
  41.             KernelEvents::REQUEST => [['onKernelRequest'20]],
  42.         ];
  43.     }
  44. }