/** * Apply Fractal * * @param Request $request Request * @param Response $response Response * * @return Response Response */ private function applyFractal(Request $request, Response $response) { $fractal = new Manager(); $transformer = $this->getTransformer($request); // if (isset($this->includes)) { // $this->manager->parseIncludes($this->includes); // } 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 = $this->getPaginator($response)) { $resource->setPaginator($paginator); } } if (isset($resource)) { $serializer = $this->getSerializer($request); $fractal->setSerializer($serializer); $resource = $fractal->createData($resource)->toArray(); $json = \Craft\JsonHelper::encode($resource); $response = $response->withJson($json); } return $response; }