* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace App\EventSubscriber; use App\Twig\SourceCodeExtension; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\ControllerEvent; use Symfony\Component\HttpKernel\KernelEvents; /** * Defines the method that 'listens' to the 'kernel.controller' event, which is * triggered whenever a controller is executed in the application. * * @author Ryan Weaver * @author Javier Eguiluz */ class ControllerSubscriber implements EventSubscriberInterface { private $twigExtension; public function __construct(SourceCodeExtension $twigExtension) { $this->twigExtension = $twigExtension; } public static function getSubscribedEvents(): array { return [ KernelEvents::CONTROLLER => 'registerCurrentController', ]; } public function registerCurrentController(ControllerEvent $event): void { // this check is needed because in Symfony a request can perform any // number of sub-requests. See // https://symfony.com/doc/current/components/http_kernel.html#sub-requests if ($event->isMasterRequest()) { $this->twigExtension->setController($event->getController()); } } }