Skip to content

Commit bd7c669

Browse files
Register QueryParameterValueResolver as "controller.targeted_value_resolver"
1 parent 17a8f92 commit bd7c669

File tree

4 files changed

+12
-1
lines changed

4 files changed

+12
-1
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class UnusedTagsPass implements CompilerPassInterface
4545
'container.service_subscriber',
4646
'container.stack',
4747
'controller.argument_value_resolver',
48+
'controller.targeted_value_resolver',
4849
'controller.service_arguments',
4950
'controller.targeted_value_resolver',
5051
'data_collector',

src/Symfony/Bundle/FrameworkBundle/Resources/config/web.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver;
1717
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DateTimeValueResolver;
1818
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
19+
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\QueryParameterValueResolver;
1920
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
2021
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestPayloadValueResolver;
2122
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
@@ -90,6 +91,9 @@
9091
->set('argument_resolver.variadic', VariadicValueResolver::class)
9192
->tag('controller.argument_value_resolver', ['priority' => -150, 'name' => VariadicValueResolver::class])
9293

94+
->set('argument_resolver.query_parameter_value_resolver', QueryParameterValueResolver::class)
95+
->tag('controller.targeted_value_resolver', ['name' => QueryParameterValueResolver::class])
96+
9397
->set('response_listener', ResponseListener::class)
9498
->args([
9599
param('kernel.charset'),

src/Symfony/Component/HttpKernel/Attribute/MapQueryParameter.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111

1212
namespace Symfony\Component\HttpKernel\Attribute;
1313

14+
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\QueryParameterValueResolver;
15+
1416
/**
1517
* Can be used to pass a query parameter to a controller argument.
1618
*
1719
* @author Ruud Kamphuis <ruud@ticketswap.com>
1820
*/
1921
#[\Attribute(\Attribute::TARGET_PARAMETER)]
20-
final class MapQueryParameter
22+
final class MapQueryParameter extends ValueResolver
2123
{
2224
/**
2325
* @see https://php.net/filter.filters.validate for filter, flags and options
@@ -29,6 +31,8 @@ public function __construct(
2931
public ?int $filter = null,
3032
public int $flags = 0,
3133
public array $options = [],
34+
string $resolver = QueryParameterValueResolver::class,
3235
) {
36+
parent::__construct($resolver);
3337
}
3438
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public function resolve(Request $request, ArgumentMetadata $argument): array
6262
if ('array' === $argument->getType() || $argument->isVariadic()) {
6363
$value = (array) $value;
6464
$options['flags'] |= \FILTER_REQUIRE_ARRAY;
65+
} else {
66+
$options['flags'] |= \FILTER_REQUIRE_SCALAR;
6567
}
6668

6769
$filter = match ($argument->getType()) {

0 commit comments

Comments
 (0)