vendor/pimcore/pimcore/bundles/CoreBundle/EventListener/EventedControllerListener.php line 44

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Bundle\CoreBundle\EventListener;
  15. use Pimcore\Controller\KernelControllerEventInterface;
  16. use Pimcore\Controller\KernelResponseEventInterface;
  17. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  18. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  19. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  20. use Symfony\Component\HttpKernel\KernelEvents;
  21. /**
  22.  * @internal
  23.  */
  24. class EventedControllerListener implements EventSubscriberInterface
  25. {
  26.     /**
  27.      * {@inheritdoc}
  28.      */
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             KernelEvents::CONTROLLER => 'onKernelController',
  33.             KernelEvents::RESPONSE => 'onKernelResponse',
  34.         ];
  35.     }
  36.     /**
  37.      * @param ControllerEvent $event
  38.      */
  39.     public function onKernelController(ControllerEvent $event)
  40.     {
  41.         $callable $event->getController();
  42.         if (!is_array($callable)) {
  43.             return;
  44.         }
  45.         $request $event->getRequest();
  46.         $controller $callable[0];
  47.         if ($controller instanceof KernelControllerEventInterface) {
  48.             $request->attributes->set('_event_controller'$controller);
  49.             $controller->onKernelControllerEvent($event);
  50.         }
  51.     }
  52.     /**
  53.      * @param ResponseEvent $event
  54.      */
  55.     public function onKernelResponse(ResponseEvent $event)
  56.     {
  57.         $request $event->getRequest();
  58.         $eventedController $request->attributes->get('_evented_controller');
  59.         $eventController $request->attributes->get('_event_controller');
  60.         if (!$eventedController && !$eventController) {
  61.             return;
  62.         }
  63.         if ($eventController instanceof KernelResponseEventInterface) {
  64.             $eventController->onKernelResponseEvent($event);
  65.         }
  66.     }
  67. }