src/EventSubscriber/LocaleSubscriber.php line 38

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Andrea
  5.  * Date: 12/03/2022
  6.  * Time: 00:53
  7.  */
  8. namespace App\EventSubscriber;
  9. use App\Entity\User;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpKernel\Event\RequestEvent;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  14. class LocaleSubscriber implements EventSubscriberInterface
  15. {
  16.     private $defaultLocale;
  17.     public function __construct(TokenStorageInterface $tokenStoragestring $defaultLocale 'it')
  18.     {
  19.         $this->defaultLocale $defaultLocale;
  20.     }
  21.     public function onKernelRequest(RequestEvent $event)
  22.     {
  23.         $request $event->getRequest();
  24.         
  25.         if ($locale $request->get('_locale')) {
  26.             $request->getSession()->set('_locale'$locale);
  27.             $request->setLocale($locale);
  28.         } else {
  29.             if($request->getSession()->get('_locale')){
  30.                 $request->getSession()->set('_locale'$request->getSession()->get('_locale'));
  31.                 $request->setLocale($request->getSession()->get('_locale'));
  32.             }else{
  33.                 $lang_browser substr($request->getPreferredLanguage(),0,2);
  34.                 $request->getSession()->set('_locale'$lang_browser);
  35.                 $request->setLocale($lang_browser);
  36.             }
  37.         }
  38.     }
  39.     /**
  40.      * @return array
  41.      */
  42.     public static function getSubscribedEvents()
  43.     {
  44.         return [
  45.             // must be registered before (i.e. with a higher priority than) the default Locale listener
  46.             KernelEvents::REQUEST => [['onKernelRequest'120]],
  47.         ];
  48.     }
  49. }