src/EventSubscriber/SiteRequestSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Exception;
  4. use Pimcore\Model\Document\Page;
  5. use Pimcore\Model\Site;
  6. use Pimcore\Tool\Frontend;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpKernel\Event\RequestEvent;
  10. class SiteRequestSubscriber implements EventSubscriberInterface
  11. {
  12.     public static function getSubscribedEvents(): array
  13.     {
  14.         //return []; // TODO kiszedni teszthez
  15.         return [RequestEvent::class => 'onRequest'];
  16.     }
  17.     public function onRequest(RequestEvent $event): void
  18.     {
  19.         if (Site::isSiteRequest()) {
  20.             return;
  21.         }
  22.         if (!$event->isMainRequest()) {
  23.             return;
  24.         }
  25.         $request $event->getRequest();
  26.         if ($request->get('_pimcore_context') === 'admin' || $request->get('pimcore_editmode') === "true") {
  27.             return;
  28.         }
  29.         $page $request->get('contentDocument');
  30.         if (!$page instanceof Page) {
  31.             return;
  32.         }
  33.         $site Frontend::getSiteForDocument($page);
  34.         if ($site instanceof Site) {
  35.             $url sprintf("%s://%s%s",
  36.                 $request->getScheme(),
  37.                 $site->getMainDomain(),
  38.                 substr($page->getRealFullPath(), strlen($site->getRootPath()))
  39.             );
  40.             $response = new RedirectResponse($url);
  41.             $response->send();
  42.         }
  43.     }
  44. }