src/EventSubscriber/LocaleSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Mediterranean Develup Solutions.
  4.  * User: Carlos.Rojas
  5.  * Date: 22/06/2017
  6.  * Time: 10:16
  7.  */
  8. namespace App\EventSubscriber;
  9. use App\Entity\User;
  10. use Symfony\Component\HttpKernel\HttpKernel;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Doctrine\ORM\EntityManager;
  14. use Symfony\Component\HttpKernel\Event\RequestEvent;
  15. class LocaleSubscriber implements EventSubscriberInterface
  16. {
  17.     protected $em;
  18.     public function __construct(EntityManager $em){
  19.         $this->em $em;
  20.     }
  21.     public function onKernelRequest(RequestEvent $event)
  22.     {
  23.         if (HttpKernel::MASTER_REQUEST != $event->getRequestType()) {
  24.             return;
  25.         }
  26.         $request $event->getRequest();
  27.         if (!$request->hasPreviousSession()) {
  28.             return;
  29.         }
  30.         $repository $this->em->getRepository(User::class);
  31.         $session $request->getSession();
  32.         $user $repository->findOneByEmail($session->get('_security.last_username'));
  33.         if(!$user){
  34.             // try to see if the locale has been set as a _locale routing parameter
  35.             if ($locale $request->attributes->get('_locale')) {
  36.                 $request->getSession()->set('_locale'$locale);
  37.             } else {
  38.                 // if no explicit locale has been set on this request, use one from the session
  39.                 $request->setLocale($request->getSession()->get('_locale''en'));
  40.             }
  41.         } else {
  42.             $idioma $user->getLanguage();
  43.             $request->setDefaultLocale($idioma);
  44.             $request->getSession()->set('_locale'$idioma);
  45.         }
  46.     }
  47.     public static function getSubscribedEvents()
  48.     {
  49.         return array(
  50.             // must be registered after the default Locale listener
  51.             KernelEvents::REQUEST => array(array('onKernelRequest'15)),
  52.         );
  53.     }
  54. }