diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml index c5bb77bb3c0ec..3630a404e8bdd 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml @@ -44,6 +44,7 @@ + diff --git a/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php b/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php index b4208311e1ce0..40fa771e63207 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php +++ b/src/Symfony/Bundle/FrameworkBundle/Routing/DelegatingLoader.php @@ -14,7 +14,9 @@ use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser; use Symfony\Component\Config\Loader\DelegatingLoader as BaseDelegatingLoader; use Symfony\Component\Config\Loader\LoaderResolverInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpKernel\Log\LoggerInterface; +use Symfony\Component\Routing\Route; /** * DelegatingLoader delegates route loading to other loaders using a loader resolver. @@ -28,6 +30,7 @@ class DelegatingLoader extends BaseDelegatingLoader { protected $parser; protected $logger; + protected $parameterBag; /** * Constructor. @@ -36,10 +39,11 @@ class DelegatingLoader extends BaseDelegatingLoader * @param LoggerInterface $logger A LoggerInterface instance * @param LoaderResolverInterface $resolver A LoaderResolverInterface instance */ - public function __construct(ControllerNameParser $parser, LoggerInterface $logger = null, LoaderResolverInterface $resolver) + public function __construct(ContainerInterface $container, ControllerNameParser $parser, LoggerInterface $logger = null, LoaderResolverInterface $resolver) { $this->parser = $parser; $this->logger = $logger; + $this->parameterBag = $container->getParameterBag(); parent::__construct($resolver); } @@ -57,6 +61,8 @@ public function load($resource, $type = null) $collection = parent::load($resource, $type); foreach ($collection->all() as $name => $route) { + $this->resolveParameters($route); + if ($controller = $route->getDefault('_controller')) { try { $controller = $this->parser->parse($controller); @@ -70,4 +76,18 @@ public function load($resource, $type = null) return $collection; } + + /** + * Replace container parameters inside route pattern and requirements. + * + * @param Route $route A route + */ + protected function resolveParameters(Route $route) + { + $route->setPattern($this->parameterBag->resolveValue($route->getPattern())); + + foreach ($route->getRequirements() as $key => $regex) { + $route->setRequirement($key, $this->parameterBag->resolveValue($regex)); + } + } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy