public function respondWithPaginatedCollection(AbstractPaginator $paginator, $callback) { $resource = new Collection($paginator->getCollection(), $callback); $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); $rootScope = $this->fractal->createData($resource); return $rootScope; }
/** * 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); }
/** * @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; }
/** * @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; }
public function register() { AbstractPaginator::presenter(function ($paginator) { return new Presenter($paginator); }); }
/** * @param AbstractPaginator $paginator * @param TransformerAbstract $transformer * @return mixed */ public function respondWithPagination(AbstractPaginator $paginator, TransformerAbstract $transformer = null) { return $this->respondWithCollection($paginator->getCollection(), $transformer); }