diff --git a/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php b/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php index 37eec45..39afb0a 100755 --- a/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php +++ b/library/Terminal42/ChangeLanguage/FrontendModule/ChangeLanguageModule.php @@ -194,14 +194,15 @@ protected function createUrlParameterBag(array $queryParameters = []) parse_str($_SERVER['QUERY_STRING'], $currentQuery); foreach ($input as $k => $value) { - $value = (string) Input::get($k, false, true); + // GET parameters can be an array + $value = Input::get($k, false, true); - if ('' === $value) { + if (empty($value)) { continue; } if (!array_key_exists($k, $currentQuery)) { - $attributes[$k] = $value; + $attributes[$k] = (string) $value; } elseif (\in_array($k, $queryParameters, false)) { $query[$k] = $value; } diff --git a/library/Terminal42/ChangeLanguage/Tests/Navigation/UrlParameterBagTest.php b/library/Terminal42/ChangeLanguage/Tests/Navigation/UrlParameterBagTest.php index 70e654c..4af97dc 100644 --- a/library/Terminal42/ChangeLanguage/Tests/Navigation/UrlParameterBagTest.php +++ b/library/Terminal42/ChangeLanguage/Tests/Navigation/UrlParameterBagTest.php @@ -170,6 +170,13 @@ public function testGenerateMultipleQuery() $this->assertSame('foo=bar&bar=baz', $bag->generateQueryString()); } + public function testGenerateArrayQuery() + { + $bag = new UrlParameterBag([], ['foo' => ['bar', 'baz']]); + + $this->assertSame(rawurlencode('foo[0]').'=bar&'.rawurlencode('foo[1]').'=baz', $bag->generateQueryString()); + } + public function testReturnsNullOnEmptyQuery() { $bag = new UrlParameterBag();