diff --git a/src/CoreBundle/Controller/ListControllerTrait.php b/src/CoreBundle/Controller/ListControllerTrait.php index 0e9bca396..db9652f77 100644 --- a/src/CoreBundle/Controller/ListControllerTrait.php +++ b/src/CoreBundle/Controller/ListControllerTrait.php @@ -383,7 +383,7 @@ private function tryReadFromSlugOrGet(FilterUrl $filterUrl, string $name, string $result = $filterUrl->getSlug($name); break; case 'slugNget': - $result = ($filterUrl->getGet($name) ?? $filterUrl->getSlug($name)); + $result = ($filterUrl->getSlug($name) ?? $filterUrl->getGet($name)); break; default: } diff --git a/src/Filter/Setting/Simple.php b/src/Filter/Setting/Simple.php index e19f7df75..1770cc4ca 100644 --- a/src/Filter/Setting/Simple.php +++ b/src/Filter/Setting/Simple.php @@ -424,10 +424,7 @@ protected function prepareFrontendFilterOptions($arrWidget, $arrFilterUrl, $arrJ $optionFilterUrl = match ($paramType) { 'get' => $filterUrl->clone()->setGet($parameterName, $strValue)->setSlug($parameterName, ''), - 'slugNget' => $filterUrl->clone()->setSlug($parameterName, $strValue)->setGet( - $parameterName, - $strValue - ), + 'slugNget' => $filterUrl->clone()->setSlug($parameterName, $strValue)->setGet($parameterName, ''), default => $filterUrl->clone()->setSlug($parameterName, $strValue)->setGet($parameterName, ''), }; diff --git a/src/FrontendIntegration/FrontendFilter.php b/src/FrontendIntegration/FrontendFilter.php index c37f88a47..a0f296a0b 100644 --- a/src/FrontendIntegration/FrontendFilter.php +++ b/src/FrontendIntegration/FrontendFilter.php @@ -467,9 +467,10 @@ protected function getFilters() $paramValue = $filter['urlvalue']; if (null !== $paramValue) { match ($filter['param_type'] ?? 'slug') { - 'get' => $other->setGet($widgetName, $paramValue), - 'slug' => $other->setSlug($widgetName, $paramValue), - default => $other->setSlug($widgetName, $paramValue)->setGet($widgetName, $paramValue), + 'get' => $other->setGet($widgetName, $paramValue), + 'slug' => $other->setSlug($widgetName, $paramValue), + 'slugNget' => $other->setSlug($widgetName, $paramValue)->setGet($widgetName, ''), + default => $other->setSlug($widgetName, $paramValue)->setGet($widgetName, $paramValue), }; } } diff --git a/tests/Filter/Setting/SimpleTest.php b/tests/Filter/Setting/SimpleTest.php index 99b429b0e..74461a9ce 100644 --- a/tests/Filter/Setting/SimpleTest.php +++ b/tests/Filter/Setting/SimpleTest.php @@ -306,7 +306,7 @@ public function testPrepareFrontendFilterOptionsGetType(): void } /** - * param_type='slugNget': option URLs set both slug and GET. + * param_type='slugNget': option URLs use slug only; GET is cleared so slug takes priority. */ public function testPrepareFrontendFilterOptionsSlugNgetType(): void { @@ -318,9 +318,9 @@ public function testPrepareFrontendFilterOptionsSlugNgetType(): void self::assertCount(2, $result); self::assertSame('A', $capturedParams[0]['slug']['my_param'] ?? null, 'Option A slug'); - self::assertSame('A', $capturedParams[0]['get']['my_param'] ?? null, 'Option A GET'); + self::assertArrayNotHasKey('my_param', $capturedParams[0]['get'], 'Option A GET absent'); self::assertSame('B', $capturedParams[1]['slug']['my_param'] ?? null, 'Option B slug'); - self::assertSame('B', $capturedParams[1]['get']['my_param'] ?? null, 'Option B GET'); + self::assertArrayNotHasKey('my_param', $capturedParams[1]['get'], 'Option B GET absent'); } /**