src/Admin/EventSubscriber/ActionSubscriber.php line 39

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