src/Admin/SuperAdmin/EventSubscriber/ActionSubscriber.php line 15

  1. <?php
  2. namespace App\Admin\SuperAdmin\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\SuperAdmin\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.             if ($this->_controller->restoreContentDefaultLocale)
  25.                 $this->_controller->setContentDefaultLocale();
  26.             $this->_controller->init();
  27.             $this->_controller->beforeAction();
  28.         }
  29.     }
  30.     public function onKernelResponse(ResponseEvent $event)
  31.     {
  32.         if ($this->_controller)
  33.             $this->_controller->afterAction();
  34.     }
  35.     
  36.     public static function getSubscribedEvents()
  37.     {
  38.         return array(
  39.             KernelEvents::CONTROLLER => 'onKernelController',
  40.             KernelEvents::RESPONSE => 'onKernelResponse'
  41.         );
  42.     }
  43. }