From f0aa45bb05c2995a6c32a631ec1e8a83aef000df Mon Sep 17 00:00:00 2001 From: David Greminger Date: Fri, 24 Jul 2020 09:53:26 +0200 Subject: [PATCH] Always include default value in the generated url (see #1975) Description ----------- | Q | A | -----------------| --- | Fixed issues | n/a | Docs PR or issue | n/a Mark `{parameters}` as important so the url generator will add the defaults to the generated urls. See https://symfony.com/doc/current/routing.html#optional-parameters > If you want to always include some default value in the generated URL (for example to force the generation of /blog/1 instead of /blog in the previous example) add the ! character before the parameter name: /blog/{!page} Commits ------- c05a8320 Always include default value in the generated url 415e8220 Fix tests --- core-bundle/src/Routing/RouteFactory.php | 2 +- core-bundle/tests/Routing/RouteFactoryTest.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core-bundle/src/Routing/RouteFactory.php b/core-bundle/src/Routing/RouteFactory.php index 5b0b1fae04f..d5f6da31967 100644 --- a/core-bundle/src/Routing/RouteFactory.php +++ b/core-bundle/src/Routing/RouteFactory.php @@ -53,7 +53,7 @@ public function createRouteForPage(PageModel $pageModel, string $defaultParamete $requirements = $config->getRequirements(); if (null === $path) { - $path = '/'.($pageModel->alias ?: $pageModel->id).'{parameters}'; + $path = '/'.($pageModel->alias ?: $pageModel->id).'{!parameters}'; $defaults['parameters'] = $defaultParameters; $requirements['parameters'] = $pageModel->requireItem ? '/.+' : '(/.+)?'; } diff --git a/core-bundle/tests/Routing/RouteFactoryTest.php b/core-bundle/tests/Routing/RouteFactoryTest.php index 68e5f36598c..3e01c9aa02d 100644 --- a/core-bundle/tests/Routing/RouteFactoryTest.php +++ b/core-bundle/tests/Routing/RouteFactoryTest.php @@ -79,7 +79,7 @@ public function testCreatesParameteredPageRouteIfPathIsNullWithoutRequireItem(): $route = $this->factory->createRouteForPage($pageModel, '/items/news'); - $this->assertSame('/foo/bar{parameters}.baz', $route->getPath()); + $this->assertSame('/foo/bar{!parameters}.baz', $route->getPath()); $this->assertSame('/items/news', $route->getDefault('parameters')); $this->assertSame('(/.+)?', $route->getRequirement('parameters')); } @@ -110,7 +110,7 @@ public function testCreatesParameteredPageRouteIfPathIsNullWithRequireItem(): vo $route = $this->factory->createRouteForPage($pageModel, '/items/news'); - $this->assertSame('/foo/bar{parameters}.baz', $route->getPath()); + $this->assertSame('/foo/bar{!parameters}.baz', $route->getPath()); $this->assertSame('/items/news', $route->getDefault('parameters')); $this->assertSame('/.+', $route->getRequirement('parameters')); }