diff --git a/src/Compat/SearchControls.php b/src/Compat/SearchControls.php index f6e74aba..384dfb66 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(); + if ($redirectUrl !== null) { - $redirectUrl->addParams($requestUrl->onlyWith($preserveParams)->getParams()->toArray(false)); + $redirectUrl->addParams($paramsToAdd->toArray(false)); } else { - $redirectUrl = $requestUrl->onlyWith($preserveParams); + $redirectUrl = $requestUrlClone; } $filter = QueryString::fromString((string) $this->params) @@ -83,7 +86,10 @@ public function createSearchBar(Query $query, ...$params): SearchBar if (method_exists($this, 'completeAction')) { $searchBar->setSuggestionUrl(Url::fromPath( "$moduleName/$controllerName/complete", - ['_disableLayout' => true, 'showCompact' => true] + $paramsToAdd + ->set('_disableLayout', true) + ->set('showCompact', true) + ->toArray(false) )); } @@ -156,14 +162,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(); if ($redirectUrl !== null) { - $redirectUrl->addParams($requestUrl->onlyWith($preserveParams)->getParams()->toArray(false)); + $redirectUrl->addParams($paramsToAdd->toArray(false)); } 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 +179,10 @@ public function createSearchEditor(Query $query, ...$params): SearchEditor if (method_exists($this, 'completeAction')) { $editor->setSuggestionUrl(Url::fromPath( "$moduleName/$controllerName/complete", - ['_disableLayout' => true, 'showCompact' => true] + $paramsToAdd + ->set('_disableLayout', true) + ->set('showCompact', true) + ->toArray(false) )); }