src/Platform/Subscriber/RequestContextSubscriber.php line 18

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Platform\Subscriber;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  8. class RequestContextSubscriber implements EventSubscriberInterface
  9. {
  10.     public function __construct(private readonly UrlGeneratorInterface $urlGenerator, private readonly string $appUrl)
  11.     {
  12.     }
  13.     public function onKernelRequest(RequestEvent $event): void
  14.     {
  15.         $requestContext $this->urlGenerator->getContext();
  16.         $parsedUrl parse_url($this->appUrl);
  17.         if ($parsedUrl === false) {
  18.             return;
  19.         }
  20.         if (isset($parsedUrl['host'])) {
  21.             $requestContext->setHost($parsedUrl['host']);
  22.         }
  23.         if (isset($parsedUrl['scheme'])) {
  24.             $requestContext->setScheme($parsedUrl['scheme']);
  25.         }
  26.         if (isset($parsedUrl['port'])) {
  27.             $requestContext->setHttpsPort($parsedUrl['port']);
  28.             $requestContext->setHttpPort($parsedUrl['port']);
  29.         }
  30.     }
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             KernelEvents::REQUEST => 'onKernelRequest',
  35.         ];
  36.     }
  37. }