public function getOnPostSerializeData(Event $event) { $object = $event->getObject(); $context = $event->getContext(); $metadataStack = $context->getMetadataStack(); $visitingStack = $context->getVisitingStack(); $links = $this->linkFactory->createLinks($object); if ($this->deferredLinks->contains($object)) { // $object contains inlined objects that had links $links = array_merge($this->deferredLinks->offsetGet($object), $links ?: array()); $this->deferredLinks->detach($object); } if (null === $links) { return; } $parentObjectInlining = $this->metadataHelper->getParentObjectInlining($object, $context); if (null !== $parentObjectInlining) { if ($this->deferredLinks->contains($parentObjectInlining)) { $links = array_merge($this->deferredLinks->offsetGet($parentObjectInlining), $links); } // We need to defer the links serialization to the $parentObject $this->deferredLinks->attach($parentObjectInlining, $links); return; } $visitor = $event->getVisitor(); return $this->linkSerializationHelper->createGenericLinksData($links, $visitor); }
public function getOnPostSerializeData(Event $event) { $object = $event->getObject(); $context = $event->getContext(); $metadataStack = $context->getMetadataStack(); $visitingStack = $context->getVisitingStack(); $relationsContent = $this->contentFactory->create($object); $visitor = $event->getVisitor(); $relationsData = array(); if (null !== $relationsContent) { $context->startVisiting($object); foreach ($relationsContent as $relationMetadata) { $relationContent = $relationsContent[$relationMetadata]; $this->addRelationRelations($event, $relationContent, $relationMetadata); $relationsData[$relationMetadata->getRel()] = $visitor->getNavigator()->accept($relationContent, $this->getContentType($relationMetadata->getContent()), $event->getContext()); } $context->stopVisiting($object); } if ($this->deferredEmbeds->contains($object)) { // $object contains inlined objects that had links $relationsData = array_merge($this->deferredEmbeds->offsetGet($object), $relationsData); $this->deferredEmbeds->detach($object); } $parentObjectInlining = $this->metadataHelper->getParentObjectInlining($object, $context); if (null !== $parentObjectInlining) { if ($this->deferredEmbeds->contains($parentObjectInlining)) { $relationsData = array_merge($this->deferredEmbeds->offsetGet($parentObjectInlining), $relationsData); } // We need to defer the links serialization to the $parentObject $this->deferredEmbeds->attach($parentObjectInlining, $relationsData); return null; } return null !== $relationsContent || !empty($relationsData) ? $relationsData : null; }
/** * @param Event $event */ public function onPostDeserialize(Event $event) { $context = $event->getContext(); if ($context->getDepth() > 0) { return; } $certification = $event->getContext()->getVisitor()->getResult(); foreach ($certification->getCategories() as $category) { $category->setCertification($certification); foreach ($category->getQuestions() as $question) { $question->setCategory($category); foreach ($question->getAnswers() as $answer) { $answer->setQuestion($question); } } } }
public function onPostDeserialize(Event $event) { $context = $event->getContext(); if ($context->getDepth() > 0) { return; } $validator = $this->validator; $context->attributes->get('validation_groups')->map(function (array $groups) use($event, $validator) { $list = $validator->validate($event->getObject(), $groups); if ($list->count() > 0) { throw new ValidationFailedException($list); } }); }