From cb5ce8f32ebb4217c291331590b8ed1cb1e5ca4f Mon Sep 17 00:00:00 2001 From: smaine Date: Tue, 15 May 2018 00:21:15 +0200 Subject: [PATCH] fix bug when imported routes are prefixed --- src/Symfony/Component/Routing/RouteCollection.php | 3 +++ .../Component/Routing/Tests/RouteCollectionTest.php | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Symfony/Component/Routing/RouteCollection.php b/src/Symfony/Component/Routing/RouteCollection.php index 84719e2c82fa5..4d14ca96db416 100644 --- a/src/Symfony/Component/Routing/RouteCollection.php +++ b/src/Symfony/Component/Routing/RouteCollection.php @@ -162,6 +162,9 @@ public function addNamePrefix(string $prefix) foreach ($this->routes as $name => $route) { $prefixedRoutes[$prefix.$name] = $route; + if (null !== $name = $route->getDefault('_canonical_route')) { + $route->setDefault('_canonical_route', $prefix.$name); + } } $this->routes = $prefixedRoutes; diff --git a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php index 3527e12895683..0ea23f673460f 100644 --- a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php +++ b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php @@ -317,4 +317,17 @@ public function testAddNamePrefix() $this->assertNull($collection->get('foo')); $this->assertNull($collection->get('bar')); } + + public function testAddNamePrefixCanonicalRouteName() + { + $collection = new RouteCollection(); + $collection->add('foo', new Route('/foo', array('_canonical_route' => 'foo'))); + $collection->add('bar', new Route('/bar', array('_canonical_route' => 'bar'))); + $collection->add('api_foo', new Route('/api/foo', array('_canonical_route' => 'api_foo'))); + $collection->addNamePrefix('api_'); + + $this->assertEquals('api_foo', $collection->get('api_foo')->getDefault('_canonical_route')); + $this->assertEquals('api_bar', $collection->get('api_bar')->getDefault('_canonical_route')); + $this->assertEquals('api_api_foo', $collection->get('api_api_foo')->getDefault('_canonical_route')); + } }