diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php index 2b2b9d0b09..8224e0a56b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php @@ -482,6 +482,15 @@ class Configuration implements ConfigurationInterface ->defaultTrue() ->end() ->booleanNode('utf8')->defaultFalse()->end() + ->arrayNode('context') + ->info('router request context') + ->addDefaultsIfNotSet() + ->children() + ->scalarNode('host')->defaultValue('%router.request_context.host%')->end() + ->scalarNode('scheme')->defaultValue('%router.request_context.scheme%')->end() + ->scalarNode('base_url')->defaultValue('%router.request_context.base_url%')->end() + ->end() + ->end() ->end() ->end() ->end() diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index a8cb13a349..45fd20a115 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -854,6 +854,11 @@ class FrameworkExtension extends Extension $container->setParameter('request_listener.http_port', $config['http_port']); $container->setParameter('request_listener.https_port', $config['https_port']); + $requestContext = $container->findDefinition('router.request_context'); + $requestContext->replaceArgument(0, $config['context']['base_url']); + $requestContext->replaceArgument(2, $config['context']['host']); + $requestContext->replaceArgument(3, $config['context']['scheme']); + if ($this->annotationsConfigEnabled) { $container->register('routing.loader.annotation', AnnotatedRouteControllerLoader::class) ->setPublic(false) diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml index 49a39360da..96ac2c72b4 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml @@ -79,10 +79,10 @@ - %router.request_context.base_url% + GET - %router.request_context.host% - %router.request_context.scheme% + + %request_listener.http_port% %request_listener.https_port% diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php index e67bc9f97d..3d6840d6e6 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php @@ -413,6 +413,11 @@ class ConfigurationTest extends TestCase 'https_port' => 443, 'strict_requirements' => true, 'utf8' => false, + 'context' => [ + 'host' => '%router.request_context.host%', + 'scheme' => '%router.request_context.scheme%', + 'base_url' => '%router.request_context.base_url%', + ], ], 'session' => [ 'enabled' => false,