src/EventListener/LocaleListener.php line 42

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\DependencyInjection\ContainerInterface as Container;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  11. use Symfony\Component\HttpKernel\Event\RequestEvent;
  12. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  13. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  14. class LocaleListener implements EventSubscriberInterface {
  15.     protected $domain;
  16.     protected $domainLocales;
  17.     protected $defaultLocale;
  18.     public function __construct($container$defaultLocale) {
  19.         $domain $container->getParameter('domain');
  20.         $this->domainLocales $container->getParameter('domain_locales');
  21.         $this->defaultLocale $defaultLocale;
  22.     }
  23.     private function searchDomain($host) {
  24.         foreach($this->domainLocales as $k=>$v) {
  25.             if(is_array($v)) {
  26.                 foreach($v as $k2=>$v2) {
  27.                     if($host==$v2) return $k;
  28.                 }
  29.             }
  30.             elseif($host==$v) return $k;
  31.         }
  32.         return $this->defaultLocale;
  33.     }
  34.     /**
  35.     * Set default locale
  36.     *
  37.     * @param RequestEvent $event
  38.     */
  39.     public function onKernelRequest(RequestEvent $event): void {
  40.         $request=$event->getRequest();
  41.         $locale=$this->searchDomain($request->getHost());
  42.         $request->setLocale($locale);
  43.     }
  44.     public function onKernelException(ExceptionEvent $event) {
  45.         $request=$event->getRequest();
  46.         //if (in_array($request->headers->get('Origin'), $this->allowed_subdomains)) {
  47.             $response $event->getResponse();
  48.             //$response->headers->set('Access-Control-Allow-Credentials', 'true');
  49.             $response->headers->set('Access-Control-Allow-Headers''*');
  50.             $response->headers->set('Access-Control-Allow-Origin''*');
  51.             $response->headers->set('Access-Control-Allow-Methods''POST, GET, PUT, DELETE, PATCH, OPTIONS');
  52.             $response->headers->set('Vary''Origin');
  53.             $event->setResponse($response);
  54.        // }
  55.     }
  56.     public function onKernelResponse(ResponseEvent $event) {
  57.         $request=$event->getRequest();
  58.         //if (in_array($request->headers->get('Origin'), $this->allowed_subdomains)) {
  59.             $response $event->getResponse();
  60.             //$response->headers->set('Access-Control-Allow-Credentials', 'true');
  61.             $response->headers->set('Access-Control-Allow-Headers''*');
  62.             $response->headers->set('Access-Control-Allow-Origin''*');
  63.             $response->headers->set('Access-Control-Allow-Methods''POST, GET, PUT, DELETE, PATCH, OPTIONS');
  64.             $response->headers->set('Vary''Origin');
  65.             $event->setResponse($response);
  66.        // }
  67.     }
  68.     /**
  69.     * {@inheritdoc}
  70.     */
  71.     static public function getSubscribedEvents() {
  72.         return array(
  73.             KernelEvents::REQUEST => array(array('onKernelRequest'17)),
  74.         );
  75.         /*return array(
  76.             KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
  77.         );}*/
  78.     }
  79. }
  80. ?>