From f848e9b7a222f2570e9585a8966b01313903d686 Mon Sep 17 00:00:00 2001 From: Sukhwinder Dhillon Date: Thu, 31 Oct 2024 14:53:15 +0100 Subject: [PATCH] SearchControls: Add available $preserveParams as default to (SearchBar/SearchEditor)suggestionUrl --- src/Compat/SearchControls.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Compat/SearchControls.php b/src/Compat/SearchControls.php index f6e74aba..8634e107 100644 --- a/src/Compat/SearchControls.php +++ b/src/Compat/SearchControls.php @@ -58,10 +58,13 @@ public function createSearchBar(Query $query, ...$params): SearchBar $preserveParams = array_pop($params) ?? []; $redirectUrl = array_pop($params); + $requestUrlClone = $requestUrl->onlyWith($preserveParams); + $paramsToAdd = $requestUrlClone->getParams()->toArray(false); + if ($redirectUrl !== null) { - $redirectUrl->addParams($requestUrl->onlyWith($preserveParams)->getParams()->toArray(false)); + $redirectUrl->addParams($paramsToAdd); } else { - $redirectUrl = $requestUrl->onlyWith($preserveParams); + $redirectUrl = $requestUrlClone; } $filter = QueryString::fromString((string) $this->params) @@ -83,7 +86,7 @@ public function createSearchBar(Query $query, ...$params): SearchBar if (method_exists($this, 'completeAction')) { $searchBar->setSuggestionUrl(Url::fromPath( "$moduleName/$controllerName/complete", - ['_disableLayout' => true, 'showCompact' => true] + $paramsToAdd + ['_disableLayout' => true, 'showCompact' => true] )); } @@ -156,14 +159,13 @@ public function createSearchEditor(Query $query, ...$params): SearchEditor $redirectUrl = array_pop($params); $moduleName = $this->getRequest()->getModuleName(); $controllerName = $this->getRequest()->getControllerName(); + $paramsToAdd = $requestUrl->onlyWith($preserveParams)->getParams()->toArray(false); if ($redirectUrl !== null) { - $redirectUrl->addParams($requestUrl->onlyWith($preserveParams)->getParams()->toArray(false)); + $redirectUrl->addParams($paramsToAdd); } else { - $redirectUrl = Url::fromPath("$moduleName/$controllerName"); - if (! empty($preserveParams)) { - $redirectUrl->setParams($requestUrl->onlyWith($preserveParams)->getParams()); - } + $redirectUrl = Url::fromPath("$moduleName/$controllerName") + ->setParams($paramsToAdd); } $editor = new SearchEditor(); @@ -174,7 +176,7 @@ public function createSearchEditor(Query $query, ...$params): SearchEditor if (method_exists($this, 'completeAction')) { $editor->setSuggestionUrl(Url::fromPath( "$moduleName/$controllerName/complete", - ['_disableLayout' => true, 'showCompact' => true] + $paramsToAdd + ['_disableLayout' => true, 'showCompact' => true] )); }