diff --git a/DependencyInjection/FrameworkExtension.php b/DependencyInjection/FrameworkExtension.php index d40ca1845..95c8d8fa1 100644 --- a/DependencyInjection/FrameworkExtension.php +++ b/DependencyInjection/FrameworkExtension.php @@ -1857,7 +1857,7 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder $container->removeDefinition('serializer.mapping.cache_class_metadata_factory'); } - if (!class_exists(Translator::class)) { + if (!$this->readConfigEnabled('translator', $container, $config)) { $container->removeDefinition('serializer.normalizer.translatable'); } diff --git a/Tests/DependencyInjection/Fixtures/php/serializer_without_translator.php b/Tests/DependencyInjection/Fixtures/php/serializer_without_translator.php new file mode 100644 index 000000000..acf013080 --- /dev/null +++ b/Tests/DependencyInjection/Fixtures/php/serializer_without_translator.php @@ -0,0 +1,14 @@ +loadFromExtension('framework', [ + 'annotations' => false, + 'http_method_override' => false, + 'handle_all_throwables' => true, + 'php_errors' => ['log' => true], + 'serializer' => [ + 'enabled' => true, + ], + 'translator' => [ + 'enabled' => false, + ], +]); diff --git a/Tests/DependencyInjection/Fixtures/xml/serializer_without_translator.xml b/Tests/DependencyInjection/Fixtures/xml/serializer_without_translator.xml new file mode 100644 index 000000000..584937b0a --- /dev/null +++ b/Tests/DependencyInjection/Fixtures/xml/serializer_without_translator.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Tests/DependencyInjection/Fixtures/yml/serializer_without_translator.yml b/Tests/DependencyInjection/Fixtures/yml/serializer_without_translator.yml new file mode 100644 index 000000000..33ee3f4b8 --- /dev/null +++ b/Tests/DependencyInjection/Fixtures/yml/serializer_without_translator.yml @@ -0,0 +1,10 @@ +framework: + annotations: false + http_method_override: false + handle_all_throwables: true + php_errors: + log: true + serializer: + enabled: true + translator: + enabled: false diff --git a/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/Tests/DependencyInjection/FrameworkExtensionTestCase.php index 9036fc6d5..460c899e3 100644 --- a/Tests/DependencyInjection/FrameworkExtensionTestCase.php +++ b/Tests/DependencyInjection/FrameworkExtensionTestCase.php @@ -1434,6 +1434,12 @@ public function testSerializerEnabled() $this->assertEquals($container->getDefinition('serializer.normalizer.object')->getArgument(6)['max_depth_handler'], new Reference('my.max.depth.handler')); } + public function testSerializerWithoutTranslator() + { + $container = $this->createContainerFromFile('serializer_without_translator'); + $this->assertFalse($container->hasDefinition('serializer.normalizer.translatable')); + } + public function testRegisterSerializerExtractor() { $container = $this->createContainerFromFile('full'); diff --git a/Tests/Functional/app/Serializer/config.yml b/Tests/Functional/app/Serializer/config.yml index 016e41291..e35d5fa28 100644 --- a/Tests/Functional/app/Serializer/config.yml +++ b/Tests/Functional/app/Serializer/config.yml @@ -3,6 +3,7 @@ imports: framework: http_method_override: false + translator: true serializer: enabled: true default_context: