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]) )); }