Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8d06a8a

Browse files
committed
bug #52795 [FrameworkBundle]  do not overwrite an application's default serialization context (xabbuh)
This PR was merged into the 5.4 branch. Discussion ---------- [FrameworkBundle]  do not overwrite an application's default serialization context | Q | A | ------------- | --- | Branch? | 5.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Issues | Fix #52776 | License | MIT Commits ------- a11801e do not overwrite an application's default serialization context
2 parents a0b3913 + a11801e commit 8d06a8a

File tree

4 files changed

+54
-8
lines changed

4 files changed

+54
-8
lines changed

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,21 +1848,23 @@ 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
}
18571863

18581864
if ($config['max_depth_handler'] ?? false) {
1859-
$defaultContext = $container->getDefinition('serializer.normalizer.object')->getArgument(6);
1860-
$defaultContext += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
1861-
$container->getDefinition('serializer.normalizer.object')->replaceArgument(6, $defaultContext);
1862-
}
1863-
1864-
if (isset($config['default_context']) && $config['default_context']) {
1865-
$container->setParameter('serializer.default_context', $config['default_context']);
1865+
$arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
1866+
$context = ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])];
1867+
$container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
18661868
}
18671869
}
18681870

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+
}
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 MaxDepthHandler
15+
{
16+
public function __invoke()
17+
{
18+
}
19+
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ imports:
44
framework:
55
serializer:
66
enabled: true
7+
circular_reference_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler
8+
max_depth_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\MaxDepthHandler
79
default_context:
810
enable_max_depth: true
911
fake_context_option: foo
@@ -57,3 +59,7 @@ services:
5759
serializer.encoder.csv.alias:
5860
alias: serializer.encoder.csv
5961
public: true
62+
63+
Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\CircularReferenceHandler: ~
64+
65+
Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\MaxDepthHandler: ~

0 commit comments

Comments
 (0)