From 6e9d37412282b808a3fb6ca05d10b3ada98acf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=81ebkowski?= Date: Thu, 30 Oct 2025 09:09:40 +0100 Subject: [PATCH] denormalize enums --- src/ServiceFactory/SlimServiceFactory.php | 2 ++ .../Http/Serializer/DeserializeParameterResolverTest.php | 1 + tests/Http/Serializer/SampleEnum.php | 9 +++++++++ tests/Http/Serializer/SamplePostInput.php | 1 + 4 files changed, 13 insertions(+) create mode 100644 tests/Http/Serializer/SampleEnum.php diff --git a/src/ServiceFactory/SlimServiceFactory.php b/src/ServiceFactory/SlimServiceFactory.php index 566caee..615fa6e 100644 --- a/src/ServiceFactory/SlimServiceFactory.php +++ b/src/ServiceFactory/SlimServiceFactory.php @@ -22,6 +22,7 @@ use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\PropertyInfo\PropertyInfoExtractor; use Symfony\Component\Serializer\Normalizer\ArrayDenormalizer; +use Symfony\Component\Serializer\Normalizer\BackedEnumNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; @@ -39,6 +40,7 @@ final class SlimServiceFactory implements ServiceFactory { public function __invoke(ServicesBuilder $builder): iterable { yield Serializer::class => static fn () => new Serializer([ new ArrayDenormalizer(), + new BackedEnumNormalizer(), new ObjectNormalizer( propertyTypeExtractor: new PropertyInfoExtractor( typeExtractors: [ diff --git a/tests/Http/Serializer/DeserializeParameterResolverTest.php b/tests/Http/Serializer/DeserializeParameterResolverTest.php index 4967a69..060c066 100644 --- a/tests/Http/Serializer/DeserializeParameterResolverTest.php +++ b/tests/Http/Serializer/DeserializeParameterResolverTest.php @@ -27,6 +27,7 @@ public function testDeserialize(): void { 'tag' => [ 'name' => 'alpha', ], + 'enum' => 'foo', ]; $get = [ 'page' => 3, diff --git a/tests/Http/Serializer/SampleEnum.php b/tests/Http/Serializer/SampleEnum.php new file mode 100644 index 0000000..2cd3d31 --- /dev/null +++ b/tests/Http/Serializer/SampleEnum.php @@ -0,0 +1,9 @@ +