Beispiel #1
0
 /**
  * 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);
 }
Beispiel #2
0
 /**
  * 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;
 }