Skip to content

Commit 079697e

Browse files
committed
[Serializer] TranslatableNormalizer before BackedEnumNormalizer
1 parent acec9c0 commit 079697e

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@
119119

120120
->set('serializer.normalizer.translatable', TranslatableNormalizer::class)
121121
->args(['$translator' => service('translator')])
122-
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -920])
122+
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -910])
123123

124124
->set('serializer.normalizer.form_error', FormErrorNormalizer::class)
125125
->tag('serializer.normalizer', ['built_in' => true, 'priority' => -915])

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1863,7 +1863,7 @@ public function testTranslatableNormalizerRegistered()
18631863
$tag = $definition->getTag('serializer.normalizer');
18641864

18651865
$this->assertSame(TranslatableNormalizer::class, $definition->getClass());
1866-
$this->assertSame(-920, $tag[0]['priority']);
1866+
$this->assertSame(-910, $tag[0]['priority']);
18671867
$this->assertEquals(new Reference('translator'), $definition->getArgument('$translator'));
18681868
}
18691869

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/SerializerTest.php

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Bundle\FrameworkBundle\Tests\Functional\app\AppKernel;
1616
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1717
use Symfony\Component\DependencyInjection\ContainerBuilder;
18+
use Symfony\Component\Serializer\Normalizer\TranslatableNormalizer;
1819

1920
/**
2021
* @author Kévin Dunglas <dunglas@gmail.com>
@@ -60,6 +61,18 @@ public function testNormalizersAndEncodersUseDefaultContextConfigOption()
6061
}
6162
}
6263

64+
public function testSerializeTranslatableBackedEnum()
65+
{
66+
static::bootKernel(['test_case' => 'Serializer']);
67+
68+
$serializer = static::getContainer()->get('serializer.alias');
69+
70+
$this->assertEquals('custom_get_string', $serializer->serialize(TranslatableBackedEnum::Get, 'yaml'));
71+
$this->assertEquals('GET', $serializer->serialize(TranslatableBackedEnum::Get, 'yaml', [
72+
TranslatableNormalizer::NORMALIZATION_LOCALE_KEY => false,
73+
]));
74+
}
75+
6376
protected static function getKernelClass(): string
6477
{
6578
return SerializerKernel::class;
@@ -91,15 +104,6 @@ public function process(ContainerBuilder $container): void
91104
}
92105
}
93106
}
94-
95-
public function testSerializeTranslatableBackedEnum()
96-
{
97-
static::bootKernel(['test_case' => 'Serializer']);
98-
99-
$serializer = static::getContainer()->get('serializer.alias');
100-
101-
$this->assertEquals('GET', $serializer->serialize(TranslatableBackedEnum::Get, 'yaml'));
102-
}
103107
}
104108

105109
class Foo

src/Symfony/Component/Serializer/Normalizer/TranslatableNormalizer.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ public function normalize(mixed $data, ?string $format = null, array $context =
4545

4646
public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool
4747
{
48-
return $data instanceof TranslatableInterface;
48+
return $data instanceof TranslatableInterface
49+
&& false !== ($context[self::NORMALIZATION_LOCALE_KEY] ?? $this->defaultContext[self::NORMALIZATION_LOCALE_KEY]);
4950
}
5051

5152
public function getSupportedTypes(?string $format): array
5253
{
53-
return [TranslatableInterface::class => true];
54+
return [TranslatableInterface::class => false];
5455
}
5556
}

0 commit comments

Comments
 (0)