8000 bug #50340 [HttpKernel] Make `QueryParameterValueResolver` provide a … · symfony/symfony@b7b0c97 · GitHub
[go: up one dir, main page]

Skip to content

Commit b7b0c97

Browse files
bug #50340 [HttpKernel] Make QueryParameterValueResolver provide a value if possible when a parameter is not found (MatTheCat)
This PR was merged into the 6.3 branch. Discussion ---------- [HttpKernel] Make `QueryParameterValueResolver` provide a value if possible when a parameter is not found | Q | A | ------------- | --- | Branch? | 6.3 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #50339 | License | MIT | Doc PR | N/A As `QueryParameterValueResolver` is “targeted” it must provide a value itself if possible. When a parameter is not found in the query string, we want to return the argument’s default value if it has one, or `null` if it is nullable. Else the behavior do not change: we throw a `NotFoundHttpException`. Commits ------- 00df479 Provide a value if possible when parameter is not found
2 parents 796a65b + 00df479 commit b7b0c97

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

src/Symfony/Component/HttpKernel/Controller/ArgumentResolver/QueryParameterValueResolver.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,12 @@ public function resolve(Request $request, ArgumentMetadata $argument): array
3131

3232
$name = $attribute->name ?? $argument->getName();
3333
if (!$request->query->has($name)) {
34-
if ($argument->isNullable() || $argument->hasDefaultValue()) {
35-
return [];
34+
if ($argument->hasDefaultValue()) {
35+
return [$argument->getDefaultValue()];
36+
}
37+
38+
if ($argument->isNullable()) {
39+
return [null];
3640
}
3741

3842
throw new NotFoundHttpException(sprintf('Missing query parameter "%s".', $name));

src/Symfony/Component/HttpKernel/Tests/Controller/ArgumentResolver/QueryParameterValueResolverTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,14 @@ public static function provideTestResolve(): iterable
179179
yield 'parameter not found but nullable' => [
180180
Request::create('/', 'GET'),
181181
new ArgumentMetadata('firstName', 'string', false, false, false, true, [new MapQueryParameter()]),
182-
[],
182+
[null],
183183
null,
184184
];
185185

186186
yield 'parameter not found but optional' => [
187187
Request::create('/', 'GET'),
188188
new ArgumentMetadata('firstName', 'string', false, true, false, attributes: [new MapQueryParameter()]),
189-
[],
189+
[false],
190190
null,
191191
];
192192

0 commit comments

Comments
 (0)
0