예제 #1
0
 /**
  * @param                   $object
  * @param ResourceInterface $dunglasResource
  * @param Manager           $fractalManager
  * @param Request|null      $request
  * @param bool              $defaultIncludes
  *
  * @return array
  * @throws \Exception
  */
 public function normalize($object, ResourceInterface $dunglasResource, Manager $fractalManager, Request $request = null, $defaultIncludes = true)
 {
     $transformer = $this->transformerHelper->getTransformer($dunglasResource->getShortName());
     if (null !== $request) {
         $fractalManager->parseIncludes($this->getEmbedsWithoutOptions($transformer, $request));
     }
     $resource = new Item($object, $transformer);
     if ($object instanceof Paginator || $object instanceof PersistentCollection) {
         $resource = new Collection($object, $transformer);
         if ($fractalManager->getSerializer() instanceof ArraySerializer) {
             $resource->setPaginator(new DunglasPaginatorAdapter($object, $resource));
         }
     }
     $rootScope = $fractalManager->createData($resource, $dunglasResource->getShortName());
     if ($defaultIncludes === false) {
         $transformer->setDefaultIncludes([]);
     }
     $transformer->setCurrentScope($rootScope)->setEmbed($dunglasResource->getShortName());
     return $rootScope->toArray();
 }
예제 #2
0
 /**
  * @param Request $request
  *
  * @return Manager
  */
 protected function getFractalManager(Request $request)
 {
     $serializer = new SerializerFactory();
     $manager = new Manager();
     $manager->setApiClassMetadataFactory($this->get('api.mapping.class_metadata_factory'))->setContextBuilder($this->get('api.json_ld.context_builder'))->setRouter($this->get('api.router'))->setResourceCollection($this->get('api.resource_collection'))->setSerializer($serializer->getSerializer($request))->setGroupsContextChainer($this->get('api.group.context.chainer'))->setSerializationGroupName($request->headers->get('e-serializer-group', null));
     return $manager;
 }