/** * Apply Fractal * * @param Request $request Request * @param Response $response Response * * @return Response Response */ private function applyFractal(Request $request, Response $response) { $fractal = new Manager(); // if (isset($this->includes)) { // $this->manager->parseIncludes($this->includes); // } $transformer = $this->transformer; $paginator = $this->paginator; $serializer = $this->serializer; if ($response->getItem()) { if ($transformer) { $resource = new Item($response->getItem(), $transformer); } else { $resource = new Item($response->getItem()); } } if (is_array($response->getCollection())) { if ($transformer) { $resource = new Collection($response->getCollection(), $transformer); } else { $resource = new Collection($response->getCollection()); } if ($paginator && ($criteria = $response->getCriteria())) { $paginator = $this->setCriteriaOnPaginator($paginator, $criteria); $resource->setPaginator($paginator); } } if (isset($resource)) { $fractal->setSerializer($serializer); $resource = $fractal->createData($resource)->toArray(); $json = JsonHelper::encode($resource); $response = $response->withJson($json); } return $response; }