コード例 #1
0
 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);
 }
コード例 #2
0
 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);
             }
         }
     }
 }
コード例 #4
0
 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);
         }
     });
 }