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()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$this->filterHandler->handleRequest($form);
|
$this->filterHandler->handleRequest($form);
|
||||||
$returnUrl = $this->getReturnUrl($request, 'app_admin_application_index');
|
$returnUrl = $this->getReturnUrl($request, 'app_admin_application_index');
|
||||||
|
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||||
|
|
||||||
return new HxRedirectResponse($returnUrl);
|
return new HxRedirectResponse($returnUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class AssignmentFilterController extends AbstractController
|
|||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$this->filterHandler->handleRequest($form);
|
$this->filterHandler->handleRequest($form);
|
||||||
$returnUrl = $this->getReturnUrl($request, 'app_administrative_assignment_index');
|
$returnUrl = $this->getReturnUrl($request, 'app_administrative_assignment_index');
|
||||||
|
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||||
|
|
||||||
return new HxRedirectResponse($returnUrl);
|
return new HxRedirectResponse($returnUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class DestinationFilterController extends AbstractController
|
|||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$this->filterHandler->handleRequest($form);
|
$this->filterHandler->handleRequest($form);
|
||||||
$returnUrl = $this->getReturnUrl($request, 'app_administrative_system_destination_index');
|
$returnUrl = $this->getReturnUrl($request, 'app_administrative_system_destination_index');
|
||||||
|
$returnUrl = $this->removeQueryParameters($returnUrl, ['page']);
|
||||||
|
|
||||||
return new HxRedirectResponse($returnUrl);
|
return new HxRedirectResponse($returnUrl);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,4 +12,60 @@ trait ReturnUrlTrait
|
|||||||
|
|
||||||
return rawurldecode($request->query->get('r', $defaultUrl));
|
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