Skip to content

Commit 00df479

Browse files
committed
Provide a value if possible when parameter is not found
1 parent 398830c commit 00df479

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)