From 7475aa8a4824e56559c2bf58f1d08e15c5799348 Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Fri, 17 Jun 2016 16:10:03 +0200 Subject: [PATCH] treat fragment after resolving query string params --- .../Component/Routing/Generator/UrlGenerator.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Component/Routing/Generator/UrlGenerator.php b/src/Symfony/Component/Routing/Generator/UrlGenerator.php index cdf2b6b4fd..2719934c97 100644 --- a/src/Symfony/Component/Routing/Generator/UrlGenerator.php +++ b/src/Symfony/Component/Routing/Generator/UrlGenerator.php @@ -257,18 +257,15 @@ class UrlGenerator implements UrlGeneratorInterface, ConfigurableRequirementsInt $url = $schemeAuthority.$this->context->getBaseUrl().$url; } - // extract unused parameters - $extra = array_diff_key($parameters, $variables, $defaults); - - // extract fragment - $fragment = isset($extra['_fragment']) ? $extra['_fragment'] : ''; - unset($extra['_fragment']); - // add a query string if needed $extra = array_udiff_assoc(array_diff_key($parameters, $variables), $defaults, function ($a, $b) { return $a == $b ? 0 : 1; }); + // extract fragment + $fragment = isset($extra['_fragment']) ? $extra['_fragment'] : ''; + unset($extra['_fragment']); + if ($extra && $query = http_build_query($extra, '', '&')) { // "/" and "?" can be left decoded for better user experience, see // http://tools.ietf.org/html/rfc3986#section-3.4