/** * Bind a paginator to a transformer and start building a response. * * @param \Illuminate\Pagination\Paginator $paginator * @param object $transformer * @param array $parameters * @param \Closure $after * * @return \Dingo\Api\Http\ResponseBuilder */ public function paginator(Paginator $paginator, $transformer, array $parameters = [], Closure $after = null) { if ($paginator->isEmpty()) { $class = get_class($paginator); } else { $class = get_class($paginator->first()); } $binding = $this->transformer->register($class, $transformer, $parameters, $after); return new ResponseBuilder($paginator, $binding); }
/** * Morph the API response to the appropriate format. * * @param string $format * * @return \Dingo\Api\Http\Response */ public function morph($format = 'json') { $content = $this->getOriginalContent(); if (isset(static::$transformer) && static::$transformer->transformableResponse($content)) { $content = static::$transformer->transform($content); } $formatter = static::getFormatter($format); $defaultContentType = $this->headers->get('content-type'); $this->headers->set('content-type', $formatter->getContentType()); if ($content instanceof EloquentModel) { $content = $formatter->formatEloquentModel($content); } elseif ($content instanceof EloquentCollection) { $content = $formatter->formatEloquentCollection($content); } elseif (is_array($content) || $content instanceof ArrayObject || $content instanceof ArrayableInterface) { $content = $formatter->formatArray($content); } else { $this->headers->set('content-type', $defaultContentType); } $this->content = $content; return $this; }