src/Admin/EventSubscriber/ActionSubscriber.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Admin\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  5. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. use App\Admin\Controller\BaseController;
  8. class ActionSubscriber implements EventSubscriberInterface
  9. {
  10.     private $_controller;
  11.     public function onKernelController(ControllerEvent $event)
  12.     {
  13.         $controller $event->getController();
  14.         /*
  15.          * $controller passed can be either a class or a Closure.
  16.          * This is not usual in Symfony but it may happen.
  17.          * If it is a class, it comes in array format
  18.          */
  19.         if (!is_array($controller))
  20.             return;
  21.         if ($controller[0] instanceof BaseController)
  22.         {
  23.             $this->_controller $controller[0];
  24.             $this->_controller->beforeAction();
  25.         }
  26.     }
  27.     public function onKernelResponse(ResponseEvent $event)
  28.     {
  29.         if ($this->_controller)
  30.             $this->_controller->afterAction();
  31.     }
  32.     
  33.     public static function getSubscribedEvents()
  34.     {
  35.         return array(
  36.             KernelEvents::CONTROLLER => 'onKernelController',
  37.             KernelEvents::RESPONSE => 'onKernelResponse'
  38.         );
  39.     }
  40. }