[FrameworkBundle] Configurable Serializer name converter
This commit is contained in:
parent
86e77eb36b
commit
e500a716da
@ -660,6 +660,7 @@ class Configuration implements ConfigurationInterface
|
|||||||
->children()
|
->children()
|
||||||
->booleanNode('enable_annotations')->defaultFalse()->end()
|
->booleanNode('enable_annotations')->defaultFalse()->end()
|
||||||
->scalarNode('cache')->end()
|
->scalarNode('cache')->end()
|
||||||
|
->scalarNode('name_converter')->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
|
@ -970,6 +970,10 @@ class FrameworkExtension extends Extension
|
|||||||
1, new Reference($config['cache'])
|
1, new Reference($config['cache'])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($config['name_converter']) {
|
||||||
|
$container->getDefinition('serializer.normalizer.object')->replaceArgument(1, new Reference($config['name_converter']));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -217,5 +217,6 @@
|
|||||||
<xsd:attribute name="enabled" type="xsd:boolean" />
|
<xsd:attribute name="enabled" type="xsd:boolean" />
|
||||||
<xsd:attribute name="cache" type="xsd:string" />
|
<xsd:attribute name="cache" type="xsd:string" />
|
||||||
<xsd:attribute name="enable-annotations" type="xsd:boolean" />
|
<xsd:attribute name="enable-annotations" type="xsd:boolean" />
|
||||||
|
<xsd:attribute name="name-converter" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<!-- Normalizer -->
|
<!-- Normalizer -->
|
||||||
<service id="serializer.normalizer.object" class="Symfony\Component\Serializer\Normalizer\ObjectNormalizer" public="false">
|
<service id="serializer.normalizer.object" class="Symfony\Component\Serializer\Normalizer\ObjectNormalizer" public="false">
|
||||||
<argument type="service" id="serializer.mapping.class_metadata_factory" />
|
<argument type="service" id="serializer.mapping.class_metadata_factory" />
|
||||||
<argument>null</argument>
|
<argument>null</argument> <!-- name converter -->
|
||||||
<argument type="service" id="serializer.property_accessor" />
|
<argument type="service" id="serializer.property_accessor" />
|
||||||
|
|
||||||
<!-- Run after all custom serializers -->
|
<!-- Run after all custom serializers -->
|
||||||
@ -55,5 +55,8 @@
|
|||||||
<service id="serializer.encoder.json" class="%serializer.encoder.json.class%" public="false">
|
<service id="serializer.encoder.json" class="%serializer.encoder.json.class%" public="false">
|
||||||
<tag name="serializer.encoder" />
|
<tag name="serializer.encoder" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
|
<!-- Name converter -->
|
||||||
|
<service id="serializer.name_converter.camel_case_to_snake_case" class="Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter" public="false" />
|
||||||
</services>
|
</services>
|
||||||
</container>
|
</container>
|
||||||
|
@ -61,7 +61,12 @@ $container->loadFromExtension('framework', array(
|
|||||||
'debug' => true,
|
'debug' => true,
|
||||||
'file_cache_dir' => '%kernel.cache_dir%/annotations',
|
'file_cache_dir' => '%kernel.cache_dir%/annotations',
|
||||||
),
|
),
|
||||||
'serializer' => array('enabled' => true),
|
'serializer' => array(
|
||||||
|
'enabled' => true,
|
||||||
|
'enable_annotations' => true,
|
||||||
|
'cache' => 'serializer.mapping.cache.apc',
|
||||||
|
'name_converter' => 'serializer.name_converter.camel_case_to_snake_case',
|
||||||
|
),
|
||||||
'ide' => 'file%%link%%format',
|
'ide' => 'file%%link%%format',
|
||||||
'request' => array(
|
'request' => array(
|
||||||
'formats' => array(
|
'formats' => array(
|
||||||
|
@ -39,6 +39,6 @@
|
|||||||
</framework:translator>
|
</framework:translator>
|
||||||
<framework:validation enabled="true" cache="apc" />
|
<framework:validation enabled="true" cache="apc" />
|
||||||
<framework:annotations cache="file" debug="true" file-cache-dir="%kernel.cache_dir%/annotations" />
|
<framework:annotations cache="file" debug="true" file-cache-dir="%kernel.cache_dir%/annotations" />
|
||||||
<framework:serializer enabled="true" />
|
<framework:serializer enabled="true" enable-annotations="true" cache="serializer.mapping.cache.apc" name-converter="serializer.name_converter.camel_case_to_snake_case" />
|
||||||
</framework:config>
|
</framework:config>
|
||||||
</container>
|
</container>
|
||||||
|
@ -47,7 +47,11 @@ framework:
|
|||||||
cache: file
|
cache: file
|
||||||
debug: true
|
debug: true
|
||||||
file_cache_dir: %kernel.cache_dir%/annotations
|
file_cache_dir: %kernel.cache_dir%/annotations
|
||||||
serializer: { enabled: true }
|
serializer:
|
||||||
|
enabled: true
|
||||||
|
enable_annotations: true
|
||||||
|
cache: serializer.mapping.cache.apc
|
||||||
|
name_converter: serializer.name_converter.camel_case_to_snake_case
|
||||||
ide: file%%link%%format
|
ide: file%%link%%format
|
||||||
request:
|
request:
|
||||||
formats:
|
formats:
|
||||||
|
@ -446,6 +446,13 @@ abstract class FrameworkExtensionTest extends TestCase
|
|||||||
{
|
{
|
||||||
$container = $this->createContainerFromFile('full');
|
$container = $this->createContainerFromFile('full');
|
||||||
$this->assertTrue($container->has('serializer'));
|
$this->assertTrue($container->has('serializer'));
|
||||||
|
|
||||||
|
$argument = $container->getDefinition('serializer.mapping.chain_loader')->getArgument(0);
|
||||||
|
|
||||||
|
$this->assertCount(1, $argument);
|
||||||
|
$this->assertEquals('Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader', $argument[0]->getClass());
|
||||||
|
$this->assertEquals(new Reference('serializer.mapping.cache.apc'), $container->getDefinition('serializer.mapping.class_metadata_factory')->getArgument(1));
|
||||||
|
$this->assertEquals(new Reference('serializer.name_converter.camel_case_to_snake_case'), $container->getDefinition('serializer.normalizer.object')->getArgument(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAssetHelperWhenAssetsAreEnabled()
|
public function testAssetHelperWhenAssetsAreEnabled()
|
||||||
|
Reference in New Issue
Block a user