src/Subscriber/KernelExceptionSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. /*
  3.  * Author: Dominik Piekarski <code@dompie.de>
  4.  * Created at: 2023/01/27 20:35
  5.  */
  6. declare(strict_types=1);
  7. namespace App\Subscriber;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  11. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  12. use Symfony\Component\HttpKernel\KernelEvents;
  13. use Symfony\Component\Routing\RouterInterface;
  14. class KernelExceptionSubscriber implements EventSubscriberInterface
  15. {
  16.     private RouterInterface $router;
  17.     public function __construct(RouterInterface $router)
  18.     {
  19.         $this->router $router;
  20.     }
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             KernelEvents::EXCEPTION => [
  25.                 ['onNotFoundRedirectToOnlineAmateurs', -63],
  26.             ],
  27.         ];
  28.     }
  29.     public function onNotFoundRedirectToOnlineAmateurs(ExceptionEvent $event): void
  30.     {
  31.         if ($event->getThrowable() instanceof NotFoundHttpException) {
  32.             $request $event->getRequest();
  33.             if (!$request->isMethod('GET') || str_starts_with($request->getPathInfo(), '/booking/external')) {
  34.                 return;
  35.             }
  36.             $wmid $request->query->getInt('wmid');
  37.             $wmid $wmid <= ? [] : ['wmid' => $wmid];
  38.             $event->setResponse(
  39.                 new RedirectResponse($this->router->generate('app_user_amateur_online'$wmid))
  40.             );
  41.             $event->stopPropagation();
  42.         }
  43.     }
  44. }