Skip to content

Commit e99018e

Browse files
authored
Merge pull request #32 from m1n0/configurable-attributes-case
Make attributes case configurable.
2 parents d1a9e4d + d49b707 commit e99018e

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

src/DependencyInjection/Configuration.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,19 @@ public function getConfigTreeBuilder()
2222

2323
$treeBuilder
2424
->root('nilportugues_json_api')
25-
->children()
26-
->arrayNode('mappings')->prototype('scalar')
27-
->isRequired()
28-
->cannotBeEmpty()
25+
->children()
26+
->arrayNode('mappings')
27+
->prototype('scalar')
28+
->isRequired()
29+
->cannotBeEmpty()
30+
->end()
31+
->end()
32+
->scalarNode('attributes_case')
33+
->defaultValue('snake_case')
34+
->validate()
35+
->ifNotInArray(['snake_case', 'keep_case']) // @TODO: implement forcing camelCase and hypen-case.
36+
->thenInvalid('Invalid case setting %s, valid values are: snake_case, keep_case')
37+
->end()
2938
->end();
3039

3140
return $treeBuilder;

src/DependencyInjection/NilPortuguesSymfonyJsonApiExtension.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public function load(array $configs, ContainerBuilder $container)
2828
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
2929
$loader->load('services.yml');
3030
$this->setMappings($container, $config);
31+
$this->setAttributesCase($container, $config);
3132
}
3233

3334
/**
@@ -72,6 +73,15 @@ private function resolveMappings(ContainerBuilder $container, $mappings)
7273
return [$loadedMappings];
7374
}
7475

76+
/**
77+
* @param ContainerBuilder $container
78+
* @param $config
79+
*/
80+
private function setAttributesCase(ContainerBuilder $container, $config)
81+
{
82+
$container->setParameter('nil_portugues.api.attributes_case', $config['attributes_case']);
83+
}
84+
7585
private function resolveBundle(ContainerBuilder $container, $name)
7686
{
7787
$bundles = $container->getParameter('kernel.bundles');

src/Resources/config/services.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ services:
77
class: NilPortugues\Api\JsonApi\JsonApiTransformer
88
arguments:
99
- "@nil_portugues.api.mapping.mapper"
10+
- "%nil_portugues.api.attributes_case%"
1011

1112
nil_portugues.serializer.json_api_serializer:
1213
class: NilPortugues\Symfony\JsonApiBundle\Serializer\JsonApiSerializer

0 commit comments

Comments
 (0)