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

Skip to content

Commit fc79c72

Browse files
committed
Allow serializer default context configuration
1 parent 717ff2d commit fc79c72

File tree

8 files changed

+21
-1
lines changed

8 files changed

+21
-1
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -809,6 +809,12 @@ private function addSerializerSection(ArrayNodeDefinition $rootNode)
809809
->end()
810810
->end()
811811
->end()
812+
->arrayNode('default_context')
813+
->normalizeKeys(false)
814+
->useAttributeAsKey('name')
815+
->defaultValue(array())
816+
->prototype('variable')->end()
817+
->end()
812818
->end()
813819
->end()
814820
->end()

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1374,6 +1374,10 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
13741374
if ($config['max_depth_handler'] ?? false) {
13751375
$container->getDefinition('serializer.normalizer.object')->addMethodCall('setMaxDepthHandler', array(new Reference($config['max_depth_handler'])));
13761376
}
1377+
1378+
if ($config['default_context'] ?? false) {
1379+
$container->getDefinition('serializer.normalizer.object')->setArgument('default_context', $config['default_context']);
1380+
}
13771381
}
13781382

13791383
private function registerPropertyInfoConfiguration(ContainerBuilder $container, XmlFileLoader $loader)

src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@
236236
<xsd:complexType name="serializer">
237237
<xsd:choice minOccurs="0" maxOccurs="unbounded">
238238
<xsd:element name="mapping" type="file_mapping" />
239+
<xsd:element name="default_context" type="metadata" minOccurs="0" maxOccurs="unbounded" />
239240
</xsd:choice>
240241
<xsd:attribute name="enabled" type="xsd:boolean" />
241242
<xsd:attribute name="cache" type="xsd:string" />

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ protected static function getBundleDefaultConfig()
209209
'enabled' => true,
210210
),
211211
'serializer' => array(
212+
'default_context' => array(),
212213
'enabled' => !class_exists(FullStack::class),
213214
'enable_annotations' => !class_exists(FullStack::class),
214215
'mapping' => array('paths' => array()),

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
'name_converter' => 'serializer.name_converter.camel_case_to_snake_case',
7171
'circular_reference_handler' => 'my.circular.reference.handler',
7272
'max_depth_handler' => 'my.max.depth.handler',
73+
'default_context' => array('enable_max_depth' => true),
7374
),
7475
'property_info' => true,
7576
'ide' => 'file%%link%%format',

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,11 @@
4141
</framework:translator>
4242
<framework:validation enabled="true" />
4343
<framework:annotations cache="file" debug="true" file-cache-dir="%kernel.cache_dir%/annotations" />
44-
<framework:serializer enabled="true" enable-annotations="true" name-converter="serializer.name_converter.camel_case_to_snake_case" circular-reference-handler="my.circular.reference.handler" max-depth-handler="my.max.depth.handler" />
44+
<framework:serializer enabled="true" enable-annotations="true" name-converter="serializer.name_converter.camel_case_to_snake_case" circular-reference-handler="my.circular.reference.handler" max-depth-handler="my.max.depth.handler">
45+
<framework:default_context>
46+
<framework:enable_max_depth>true</framework:enable_max_depth>
47+
</framework:default_context>
48+
</framework:serializer>
4549
<framework:property-info />
4650
</framework:config>
4751
</container>

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ framework:
5656
name_converter: serializer.name_converter.camel_case_to_snake_case
5757
circular_reference_handler: my.circular.reference.handler
5858
max_depth_handler: my.max.depth.handler
59+
default_context:
60+
enable_max_depth: true
5961
property_info: ~
6062
ide: file%%link%%format
6163
request:

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,7 @@ public function testSerializerEnabled()
980980
$this->assertEquals(new Reference('property_info', ContainerBuilder::IGNORE_ON_INVALID_REFERENCE), $container->getDefinition('serializer.normalizer.object')->getArgument(3));
981981
$this->assertEquals(array('setCircularReferenceHandler', array(new Reference('my.circular.reference.handler'))), $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[0]);
982982
$this->assertEquals(array('setMaxDepthHandler', array(new Reference('my.max.depth.handler'))), $container->getDefinition('serializer.normalizer.object')->getMethodCalls()[1]);
983+
$this->assertEquals(array('enable_max_depth' => true), $container->getDefinition('serializer.normalizer.object')->getArgument('default_context'));
983984
}
984985

985986
public function testRegisterSerializerExtractor()

0 commit comments

Comments
 (0)