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

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 Enterprise License (PEL)
  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 PEL
  13.  */
  14. namespace Pimcore\Bundle\CoreBundle\EventListener;
  15. use Pimcore\Controller\EventedControllerInterface;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
  18. use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
  19. use Symfony\Component\HttpKernel\KernelEvents;
  20. class EventedControllerListener implements EventSubscriberInterface
  21. {
  22.     /**
  23.      * @inheritdoc
  24.      */
  25.     public static function getSubscribedEvents()
  26.     {
  27.         return [
  28.             KernelEvents::CONTROLLER => 'onKernelController',
  29.             KernelEvents::RESPONSE => 'onKernelResponse'
  30.         ];
  31.     }
  32.     /**
  33.      * @param FilterControllerEvent $event
  34.      */
  35.     public function onKernelController(FilterControllerEvent $event)
  36.     {
  37.         $callable $event->getController();
  38.         if (!is_array($callable)) {
  39.             return;
  40.         }
  41.         $request $event->getRequest();
  42.         $controller $callable[0];
  43.         if ($controller instanceof EventedControllerInterface) {
  44.             $request->attributes->set('_evented_controller'$controller);
  45.             $controller->onKernelController($event);
  46.         }
  47.     }
  48.     /**
  49.      * @param FilterResponseEvent $event
  50.      */
  51.     public function onKernelResponse(FilterResponseEvent $event)
  52.     {
  53.         $request $event->getRequest();
  54.         $controller $request->attributes->get('_evented_controller');
  55.         if (!$controller || !($controller instanceof EventedControllerInterface)) {
  56.             return;
  57.         }
  58.         $controller->onKernelResponse($event);
  59.     }
  60. }