diff --git a/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php b/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php new file mode 100644 index 000000000..1016871a8 --- /dev/null +++ b/src/Bundle/ChillDocStoreBundle/Serializer/Normalizer/StoredObjectDenormalizer.php @@ -0,0 +1,50 @@ +storedObjectRepository = $storedObjectRepository; + } + + public function denormalize($data, $type, $format = null, array $context = []) + { + if (array_key_exists(AbstractNormalizer::OBJECT_TO_POPULATE, $context)) { + return $context[AbstractNormalizer::OBJECT_TO_POPULATE]; + } + + return $this->storedObjectRepository->find($data['id']); + } + + public function supportsDenormalization($data, $type, $format = null) + { + if (false === is_array($data)) { + return false; + } + + if (false === array_key_exists('id', $data)) { + return false; + } + + return $type === StoredObject::class; + + } +} \ No newline at end of file diff --git a/src/Bundle/ChillDocStoreBundle/config/services.yaml b/src/Bundle/ChillDocStoreBundle/config/services.yaml index 5c73c3479..417e0676d 100644 --- a/src/Bundle/ChillDocStoreBundle/config/services.yaml +++ b/src/Bundle/ChillDocStoreBundle/config/services.yaml @@ -33,3 +33,10 @@ services: resource: './../Workflow/' autoconfigure: true autowire: true + + Chill\DocStoreBundle\Serializer\Normalizer\: + autowire: true + resource: '../Serializer/Normalizer/' + tags: + - { name: 'serializer.normalizer', priority: 128 } +