From f8e939b5cb26d3eec7c32516ad8166fd87ef13a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petar=20=C5=A0panja?= Date: Tue, 9 Apr 2024 10:18:06 +0200 Subject: [PATCH] IBX-8088: Do not prepend siteaccess to URL if default --- src/bundle/Core/Resources/config/routing.yml | 1 + src/lib/MVC/Symfony/Routing/Generator.php | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bundle/Core/Resources/config/routing.yml b/src/bundle/Core/Resources/config/routing.yml index b746b92942..681681d3f0 100644 --- a/src/bundle/Core/Resources/config/routing.yml +++ b/src/bundle/Core/Resources/config/routing.yml @@ -34,6 +34,7 @@ services: - [setRequestContext, ["@router.request_context"]] - [setSiteAccess, ['@?Ibexa\Core\MVC\Symfony\SiteAccess']] - [setSiteAccessRouter, ['@Ibexa\Core\MVC\Symfony\SiteAccess\Router']] + - [setDefaultSiteAccessName, ['%ibexa.site_access.default%']] - [setLogger, ["@?logger"]] Ibexa\Bundle\Core\Routing\UrlAliasRouter: diff --git a/src/lib/MVC/Symfony/Routing/Generator.php b/src/lib/MVC/Symfony/Routing/Generator.php index eb9d819543..24782b7567 100644 --- a/src/lib/MVC/Symfony/Routing/Generator.php +++ b/src/lib/MVC/Symfony/Routing/Generator.php @@ -30,6 +30,8 @@ abstract class Generator implements SiteAccessAware /** @var \Psr\Log\LoggerInterface */ protected $logger; + protected string $defaultSiteAccessName; + /** * @param \Symfony\Component\Routing\RequestContext $requestContext */ @@ -54,6 +56,11 @@ public function setSiteAccess(SiteAccess $siteAccess = null) $this->siteAccess = $siteAccess; } + public function setDefaultSiteAccessName(string $name): void + { + $this->defaultSiteAccessName = $name; + } + /** * @param \Psr\Log\LoggerInterface $logger */ @@ -92,7 +99,7 @@ public function generate($urlResource, array $parameters, $referenceType = UrlGe $url = $this->doGenerate($urlResource, $parameters); // Add the SiteAccess URI back if needed. - if ($siteAccess && $siteAccess->matcher instanceof SiteAccess\URILexer) { + if ($siteAccess && $siteAccess->matcher instanceof SiteAccess\URILexer && $siteAccess->name !== $this->defaultSiteAccessName) { $url = $siteAccess->matcher->analyseLink($url); }