Skip to content

Commit 85ac4b2

Browse files
committed
do not overwrite an application's default serialization context
1 parent 92513d3 commit 85ac4b2

File tree

3 files changed

+29
-5
lines changed

3 files changed

+29
-5
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,9 +1848,15 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
18481848
$container->getDefinition('serializer.name_converter.metadata_aware')->setArgument(1, new Reference($config['name_converter']));
18491849
}
18501850

1851+
$defaultContext = $config['default_context'] ?? [];
1852+
1853+
if ($defaultContext) {
1854+
$container->setParameter('serializer.default_context', $defaultContext);
1855+
}
1856+
18511857
if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
18521858
$arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
1853-
$context = ($arguments[6] ?? []) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
1859+
$context = ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
18541860
$container->getDefinition('serializer.normalizer.object')->setArgument(5, null);
18551861
$container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
18561862
}
@@ -1860,10 +1866,6 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
18601866
$defaultContext += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
18611867
$container->getDefinition('serializer.normalizer.object')->replaceArgument(6, $defaultContext);
18621868
}
1863-
1864-
if (isset($config['default_context']) && $config['default_context']) {
1865-
$container->setParameter('serializer.default_context', $config['default_context']);
1866-
}
18671869
}
18681870

18691871
private function registerPropertyInfoConfiguration(ContainerBuilder $container, PhpFileLoader $loader)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer;
13+
14+
class CircularReferenceHandler
15+
{
16+
public function __invoke()
17+
{
18+
}
19+
}

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ imports:
44
framework:
55
serializer:
66
enabled: true
7+
circular_reference_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler
78
default_context:
89
enable_max_depth: true
910
fake_context_option: foo
@@ -57,3 +58,5 @@ services:
5758
serializer.encoder.csv.alias:
5859
alias: serializer.encoder.csv
5960
public: true
61+
62+
Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler: ~

0 commit comments

Comments
 (0)