diff --git a/src/Symfony/Component/Routing/RouteCollection.php b/src/Symfony/Component/Routing/RouteCollection.php index a0700bba3d681..d59a5a3bda1cf 100644 --- a/src/Symfony/Component/Routing/RouteCollection.php +++ b/src/Symfony/Component/Routing/RouteCollection.php @@ -157,8 +157,15 @@ public function get(string $name) */ public function remove($name) { - foreach ((array) $name as $n) { - unset($this->routes[$n], $this->priorities[$n], $this->aliases[$n]); + $names = (array) $name; + foreach ($names as $n) { + unset($this->routes[$n], $this->priorities[$n]); + } + + foreach ($this->aliases as $k => $alias) { + if (\in_array($alias->getId(), $names, true)) { + unset($this->aliases[$k]); + } } } diff --git a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php index a191c88a61849..db5125b5ab43e 100644 --- a/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php +++ b/src/Symfony/Component/Routing/Tests/RouteCollectionTest.php @@ -225,11 +225,13 @@ public function testRemove() $collection1->add('bar', $bar = new Route('/bar')); $collection->addCollection($collection1); $collection->add('last', $last = new Route('/last')); + $collection->addAlias('ccc_my_custom_alias', 'foo'); $collection->remove('foo'); $this->assertSame(['bar' => $bar, 'last' => $last], $collection->all(), '->remove() can remove a single route'); $collection->remove(['bar', 'last']); $this->assertSame([], $collection->all(), '->remove() accepts an array and can remove multiple routes at once'); + $this->assertNull($collection->getAlias('ccc_my_custom_alias')); } public function testSetHost()