fix: remove page parameter from return url when filtering
closes #869anjygz
This commit is contained in:
@@ -43,6 +43,7 @@ class ApplicationFilterController extends AbstractController
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->filterHandler->handleRequest($form);
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_admin_application_index');
|
||||
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||
|
||||
return new HxRedirectResponse($returnUrl);
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@ class AssignmentFilterController extends AbstractController
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->filterHandler->handleRequest($form);
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_administrative_assignment_index');
|
||||
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||
|
||||
return new HxRedirectResponse($returnUrl);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ class DestinationFilterController extends AbstractController
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$this->filterHandler->handleRequest($form);
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_administrative_system_destination_index');
|
||||
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||
|
||||
return new HxRedirectResponse($returnUrl);
|
||||
}
|
||||
|
||||
@@ -12,4 +12,60 @@ trait ReturnUrlTrait
|
||||
|
||||
return rawurldecode($request->query->get('r', $defaultUrl));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove specified query parameters from a URL.
|
||||
*
|
||||
* @param string $url The URL to process
|
||||
* @param string[] $parametersKeys Array of query parameter keys to remove
|
||||
*
|
||||
* @return string The URL without the specified query parameters
|
||||
*/
|
||||
public function removeQueryParameters(string $url, array $parametersKeys): string
|
||||
{
|
||||
if ([] === $parametersKeys) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
$urlParts = parse_url($url);
|
||||
|
||||
if (false === isset($urlParts['query'])) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
parse_str($urlParts['query'], $queryParams);
|
||||
|
||||
foreach ($parametersKeys as $key) {
|
||||
unset($queryParams[$key]);
|
||||
}
|
||||
|
||||
$urlParts['query'] = http_build_query($queryParams);
|
||||
|
||||
if ('' === $urlParts['query']) {
|
||||
unset($urlParts['query']);
|
||||
}
|
||||
|
||||
// Rebuild URL
|
||||
$result = '';
|
||||
if (isset($urlParts['scheme'])) {
|
||||
$result .= $urlParts['scheme'].'://';
|
||||
}
|
||||
if (isset($urlParts['host'])) {
|
||||
$result .= $urlParts['host'];
|
||||
}
|
||||
if (isset($urlParts['port'])) {
|
||||
$result .= ':'.$urlParts['port'];
|
||||
}
|
||||
if (isset($urlParts['path'])) {
|
||||
$result .= $urlParts['path'];
|
||||
}
|
||||
if (isset($urlParts['query'])) {
|
||||
$result .= '?'.$urlParts['query'];
|
||||
}
|
||||
if (isset($urlParts['fragment'])) {
|
||||
$result .= '#'.$urlParts['fragment'];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user