vendor/shopware/core/Framework/Routing/RouteEventSubscriber.php line 43

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Core\Framework\Routing;
  3. use Shopware\Core\Framework\Log\Package;
  4. use Shopware\Storefront\Event\StorefrontRenderEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  10. /**
  11. * @deprecated tag:v6.5.0 - reason:becomes-internal - EventSubscribers will become internal in v6.5.0
  12. */
  13. #[Package('core')]
  14. class RouteEventSubscriber implements EventSubscriberInterface
  15. {
  16. private EventDispatcherInterface $dispatcher;
  17. /**
  18. * @internal
  19. */
  20. public function __construct(EventDispatcherInterface $dispatcher)
  21. {
  22. $this->dispatcher = $dispatcher;
  23. }
  24. public static function getSubscribedEvents(): array
  25. {
  26. $events = [
  27. KernelEvents::REQUEST => ['request', -10],
  28. KernelEvents::RESPONSE => ['response', -10],
  29. ];
  30. if (class_exists(StorefrontRenderEvent::class)) {
  31. $events[StorefrontRenderEvent::class] = ['render', -10];
  32. }
  33. return $events;
  34. }
  35. public function request(RequestEvent $event): void
  36. {
  37. $request = $event->getRequest();
  38. if (!$request->attributes->has('_route')) {
  39. return;
  40. }
  41. $name = $request->attributes->get('_route') . '.request';
  42. $this->dispatcher->dispatch($event, $name);
  43. }
  44. public function render(StorefrontRenderEvent $event): void
  45. {
  46. $request = $event->getRequest();
  47. if (!$request->attributes->has('_route')) {
  48. return;
  49. }
  50. $name = $request->attributes->get('_route') . '.render';
  51. $this->dispatcher->dispatch($event, $name);
  52. }
  53. public function response(ResponseEvent $event): void
  54. {
  55. $request = $event->getRequest();
  56. if (!$request->attributes->has('_route')) {
  57. return;
  58. }
  59. $name = $request->attributes->get('_route') . '.response';
  60. $this->dispatcher->dispatch($event, $name);
  61. }
  62. }