Skip to content

Commit 29227eb

Browse files
ogizanagifabpot
authored andcommitted
[HttpKernel] Add a controller argument resolver for backed enums
1 parent bf8541f commit 29227eb

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
use Symfony\Component\HttpKernel\Attribute\AsController;
8080
use Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface;
8181
use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface;
82+
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver;
8283
use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
8384
use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
8485
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
@@ -238,6 +239,11 @@ public function load(array $configs, ContainerBuilder $container)
238239
$loader = new PhpFileLoader($container, new FileLocator(\dirname(__DIR__).'/Resources/config'));
239240

240241
$loader->load('web.php');
242+
243+
if (\PHP_VERSION_ID < 80100 || !class_exists(BackedEnumValueResolver::class)) {
244+
$container->removeDefinition('argument_resolver.backed_enum_resolver');
245+
}
246+
241247
$loader->load('services.php');
242248
$loader->load('fragment_renderer.php');
243249
$loader->load('error_renderer.php');

Resources/config/web.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver;
1515
use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
16+
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver;
1617
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
1718
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
1819
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
@@ -45,6 +46,11 @@
4546
abstract_arg('argument value resolvers'),
4647
])
4748

49+
->set('argument_resolver.backed_enum_resolver', BackedEnumValueResolver::class)
50+
->tag('controller.argument_value_resolver', [
51+
'priority' => 105, // prior to the RequestAttributeValueResolver
52+
])
53+
4854
->set('argument_resolver.request_attribute', RequestAttributeValueResolver::class)
4955
->tag('controller.argument_value_resolver', ['priority' => 100])
5056

0 commit comments

Comments
 (0)