Skip to content

Commit

Permalink
Fix #133: Don't add not substituted arguments as query string
Browse files Browse the repository at this point in the history
  • Loading branch information
rustamwin committed Dec 23, 2023
1 parent e2e168d commit aba44b7
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/UrlGenerator.php
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,8 @@ private function generatePath(array $arguments, array $queryParameters, array $p
$path = str_replace('//', '/', $path);

$queryString = '';
if (!empty($notSubstitutedArguments) || !empty($queryParameters)) {
$queryString = http_build_query(array_merge($notSubstitutedArguments, $queryParameters));
if (!empty($queryParameters)) {
$queryString = http_build_query($queryParameters);
}

return $path . (!empty($queryString) ? '?' . $queryString : '');
Expand Down
17 changes: 2 additions & 15 deletions tests/UrlGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,19 +209,6 @@ public function testQueryParametersAddedAsQueryStringWithEmptyValues(): void
$this->assertEquals('/test/post', $url);
}

public function testExtraArgumentsAddedAsQueryString(): void
{
$routes = [
Route::get('/test/{name}')
->name('test'),
];

$url = $this
->createUrlGenerator($routes)
->generate('test', ['name' => 'post', 'id' => 12, 'sort' => 'asc']);
$this->assertEquals('/test/post?id=12&sort=asc', $url);
}

public function testQueryParametersOverrideExtraArguments(): void
{
$routes = [
Expand All @@ -235,7 +222,7 @@ public function testQueryParametersOverrideExtraArguments(): void
$this->assertEquals('/test/post?id=12&sort=asc', $url);
}

public function testQueryParametersMergedWithExtraArguments(): void
public function testNotSubstitutedArgumentsRemove(): void
{
$routes = [
Route::get('/test/{name}')
Expand All @@ -245,7 +232,7 @@ public function testQueryParametersMergedWithExtraArguments(): void
$url = $this
->createUrlGenerator($routes)
->generate('test', ['name' => 'post', 'id' => 11], ['sort' => 'asc']);
$this->assertEquals('/test/post?id=11&sort=asc', $url);
$this->assertEquals('/test/post?sort=asc', $url);
}

public function testDefaultNotUsedForOptionalArgument(): void
Expand Down

0 comments on commit aba44b7

Please sign in to comment.