vendor/contao/core-bundle/src/HttpKernel/ControllerResolver.php line 40

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of Contao.
  5.  *
  6.  * (c) Leo Feyer
  7.  *
  8.  * @license LGPL-3.0-or-later
  9.  */
  10. namespace Contao\CoreBundle\HttpKernel;
  11. use Contao\CoreBundle\Fragment\FragmentRegistry;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
  14. class ControllerResolver implements ControllerResolverInterface
  15. {
  16.     /**
  17.      * @var ControllerResolverInterface
  18.      */
  19.     private $resolver;
  20.     /**
  21.      * @var FragmentRegistry
  22.      */
  23.     private $registry;
  24.     /**
  25.      * @internal Do not inherit from this class; decorate the "contao.controller_resolver" service instead
  26.      */
  27.     public function __construct(ControllerResolverInterface $resolverFragmentRegistry $registry)
  28.     {
  29.         $this->resolver $resolver;
  30.         $this->registry $registry;
  31.     }
  32.     public function getController(Request $request)
  33.     {
  34.         if (
  35.             $request->attributes->has('_controller')
  36.             && \is_string($controller $request->attributes->get('_controller'))
  37.         ) {
  38.             $fragmentConfig $this->registry->get($controller);
  39.             if (null !== $fragmentConfig) {
  40.                 $request->attributes->set('_controller'$fragmentConfig->getController());
  41.             }
  42.         }
  43.         return $this->resolver->getController($request);
  44.     }
  45.     public function getArguments(Request $request$controller): array
  46.     {
  47.         if (!method_exists($this->resolver'getArguments')) {
  48.             return [];
  49.         }
  50.         return $this->resolver->getArguments($request$controller);
  51.     }
  52. }