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

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.     private ControllerResolverInterface $resolver;
  17.     private FragmentRegistry $registry;
  18.     /**
  19.      * @internal Do not inherit from this class; decorate the "contao.controller_resolver" service instead
  20.      */
  21.     public function __construct(ControllerResolverInterface $resolverFragmentRegistry $registry)
  22.     {
  23.         $this->resolver $resolver;
  24.         $this->registry $registry;
  25.     }
  26.     public function getController(Request $request)
  27.     {
  28.         if (
  29.             $request->attributes->has('_controller')
  30.             && \is_string($controller $request->attributes->get('_controller'))
  31.         ) {
  32.             $fragmentConfig $this->registry->get($controller);
  33.             if (null !== $fragmentConfig) {
  34.                 $request->attributes->set('_controller'$fragmentConfig->getController());
  35.             }
  36.         }
  37.         return $this->resolver->getController($request);
  38.     }
  39.     public function getArguments(Request $request, callable $controller): array
  40.     {
  41.         if (!method_exists($this->resolver'getArguments')) {
  42.             return [];
  43.         }
  44.         return $this->resolver->getArguments($request$controller);
  45.     }
  46. }