Пример #1
0
 public function respondWithPaginatedCollection(AbstractPaginator $paginator, $callback)
 {
     $resource = new Collection($paginator->getCollection(), $callback);
     $resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
     $rootScope = $this->fractal->createData($resource);
     return $rootScope;
 }
Пример #2
0
 /**
  * Convert rows to \Data\Row\Row && return Paginator
  *
  * @param $perPage
  * @param null $page
  * @return AbstractPaginator
  */
 public function paginate($perPage, $page = null)
 {
     $this->paginator = $this->createPaginator($perPage, $page);
     $this->paginator->setCollection($this->paginator->getCollection()->map(function ($row) {
         return lego_row($row);
     }));
     $this->paginator->appends(Request::input());
     return $this->paginator;
 }
 /**
  * Start JSON API support.
  *
  * This middleware:
  * - Loads the configuration for the named API that this request is being routed to.
  * - Registers the API in the service container.
  * - Triggers client/server content negotiation as per the JSON API spec.
  *
  * @param Request $request
  * @param Closure $next
  * @param $namespace
  *      the API namespace, as per your JSON API configuration.
  * @return mixed
  */
 public function handle($request, Closure $next, $namespace)
 {
     /** @var ApiFactory $factory */
     $factory = $this->container->make(ApiFactoryInterface::class);
     /** @var ServerRequestInterface $request */
     $serverRequest = $this->container->make(ServerRequestInterface::class);
     /** @var RequestFactoryInterface $requestFactory */
     $requestFactory = $this->container->make(RequestFactoryInterface::class);
     /** Build and register the API */
     $api = $factory->createApi($namespace, $request->getSchemeAndHttpHost());
     $this->container->instance(ApiInterface::class, $api);
     /** Build and register the JSON API request */
     $jsonApiRequest = $requestFactory->build($api, $serverRequest);
     $this->container->instance(RequestInterface::class, $jsonApiRequest);
     /** Override the current page resolution */
     AbstractPaginator::currentPageResolver(function () {
         /** @var PaginatorInterface $paginator */
         $paginator = $this->container->make(PaginatorInterface::class);
         return $paginator->getCurrentPage();
     });
     return $next($request);
 }
Пример #4
0
 /**
  * @param AbstractPaginator|LengthAwarePaginator|Paginator $paginator
  * @return \League\Fractal\Resource\Collection
  */
 protected function transformPaginator($paginator)
 {
     $collection = $paginator->getCollection();
     $resource = new Collection($collection, $this->getTransformer(), $this->resourceKeyCollection);
     $resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
     return $resource;
 }
Пример #5
0
 /**
  * @param AbstractPaginator $data
  *
  * @return Collection
  */
 private function transformPaginator(AbstractPaginator $data)
 {
     $collection = $data->getCollection();
     $resource = new Collection($collection, $this->getTransformer());
     $resource->setPaginator(new IlluminatePaginatorAdapter($data));
     return $resource;
 }
Пример #6
0
 public function register()
 {
     AbstractPaginator::presenter(function ($paginator) {
         return new Presenter($paginator);
     });
 }
Пример #7
0
 /**
  * @param AbstractPaginator $paginator
  * @param TransformerAbstract $transformer
  * @return mixed
  */
 public function respondWithPagination(AbstractPaginator $paginator, TransformerAbstract $transformer = null)
 {
     return $this->respondWithCollection($paginator->getCollection(), $transformer);
 }