From 8371773c140057f363530e14f84f8df2e53a671d Mon Sep 17 00:00:00 2001 From: Sukhwinder Dhillon Date: Mon, 21 Oct 2024 15:21:04 +0200 Subject: [PATCH] SearchControls: Add available `$preserveParams` as default to `(SearchBar/SearchEditor)suggestionUrl` This way we no longer have to set the suggestionUrl manually, as in (Host/Service)groupController --- src/Compat/SearchControls.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Compat/SearchControls.php b/src/Compat/SearchControls.php index f6e74aba..11fef567 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); + $paramsToAdd = $requestUrl->onlyWith($preserveParams)->getParams()->toArray(false); + if ($redirectUrl !== null) { - $redirectUrl->addParams($requestUrl->onlyWith($preserveParams)->getParams()->toArray(false)); + $redirectUrl->addParams($paramsToAdd); } else { - $redirectUrl = $requestUrl->onlyWith($preserveParams); + $redirectUrl = clone $requestUrl; + $redirectUrl->setParams($paramsToAdd); } $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] + array_merge($paramsToAdd, ['_disableLayout' => true, 'showCompact' => true]) )); } @@ -156,13 +159,14 @@ 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()); + if (! empty($paramsToAdd)) { + $redirectUrl->setParams($paramsToAdd); } } @@ -174,7 +178,7 @@ public function createSearchEditor(Query $query, ...$params): SearchEditor if (method_exists($this, 'completeAction')) { $editor->setSuggestionUrl(Url::fromPath( "$moduleName/$controllerName/complete", - ['_disableLayout' => true, 'showCompact' => true] + array_merge($paramsToAdd, ['_disableLayout' => true, 'showCompact' => true]) )); }