Skip to content

Commit 0128ee2

Browse files
authored
Merge pull request #19 from markitosgv/master
Add setSerializeNull config option
2 parents 0c8d7fe + 31aacac commit 0128ee2

4 files changed

Lines changed: 41 additions & 4 deletions

File tree

DependencyInjection/Configuration.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@ public function getConfigTreeBuilder()
2929
{
3030
$treeBuilder = new TreeBuilder();
3131

32+
$rootNode = $treeBuilder->root('wobble_code_rest');
33+
34+
$rootNode
35+
->children()
36+
->booleanNode('serialize_null')->defaultTrue()->end()
37+
->end();
38+
3239
return $treeBuilder;
3340
}
3441
}

DependencyInjection/WobbleCodeRestExtension.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace WobbleCode\RestBundle\DependencyInjection;
1313

14+
use Symfony\Component\Config\Definition\Processor;
1415
use Symfony\Component\DependencyInjection\ContainerBuilder;
1516
use Symfony\Component\Config\FileLocator;
1617
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
@@ -29,6 +30,16 @@ class WobbleCodeRestExtension extends Extension
2930
public function load(array $configs, ContainerBuilder $container)
3031
{
3132
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
33+
$processor = new Processor();
34+
$configuration = new Configuration();
35+
36+
$config = $processor->processConfiguration($configuration, $configs);
37+
3238
$loader->load('services.yml');
39+
40+
$definition = $container->getDefinition('wobblecode.restbundle.rest_suscriber');
41+
$definition->addMethodCall('setSerializeNull', [
42+
$config['serialize_null']
43+
]);
3344
}
3445
}

EventListener/RestSubscriber.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ public function decoupleMetadata($object, $paginationKey = 'entities')
8181

8282
return [
8383
'metadata' => [
84-
'count' => $entities->count(),
85-
'total_count' => $entities->getTotalItemCount(),
86-
'items_per_page' => $entities->getItemNumberPerPage(),
87-
'page_number' => $entities->getCurrentPageNumber()
84+
'count' => (int) $entities->count(),
85+
'total_count' => (int) $entities->getTotalItemCount(),
86+
'items_per_page' => (int) $entities->getItemNumberPerPage(),
87+
'page_number' => (int) $entities->getCurrentPageNumber()
8888
],
8989
$paginationKey => $entities->getItems()
9090
];
@@ -399,6 +399,16 @@ public function addNoCacheHeaders(Response $response)
399399
$response->headers->addCacheControlDirective('no-store', true);
400400
}
401401

402+
/**
403+
* Set serialize default option
404+
*
405+
* @param bool $serializeNull
406+
*/
407+
public function setSerializeNull(bool $serializeNull)
408+
{
409+
$this->serializationContext->setSerializeNull($serializeNull);
410+
}
411+
402412
/**
403413
* {@inheritdocs}
404414
*/

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,15 @@ Process forms errors
193193

194194
Process params with name form as principal Form for validation
195195

196+
### Configuration
197+
198+
You can set serialize null property on bundle configuration.
199+
200+
```yaml
201+
wobble_code_rest:
202+
serialize_null: false
203+
```
204+
196205
## License
197206
198207
Copyright (c) 2016 Luis Hdez

0 commit comments

Comments
 (0)