/** * Paginates the Elasticsearch results. * * @param int $perPage * @return mixed */ public function paginate($perPage = 15) { $paginator = new Paginator($this->items, $perPage); $start = ($paginator->currentPage() - 1) * $perPage; $sliced = array_slice($this->items, $start, $perPage); return new Paginator($sliced, $perPage); }
/** * Render the given paginator. * * @return string */ public function render() { $render = ""; if ($this->paginator->currentPage() > 1) { $render .= "<div class='pagination pagination-previous'><a href='" . $this->paginator->previousPageUrl() . "'> << Page précédente </a></div>"; } if ($this->paginator->hasMorePages()) { $render .= "<div class='pagination pagination-next'><a href='" . $this->paginator->nextPageUrl() . "'> Page suivante >> </a></div>"; } return "<div class='pagination-container'>" . $render . "</div>"; }
/** * @param Tag $tag * @param Request $request * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|Paginator * @throws \Exception */ public function index(Tag $tag, Request $request) { $value = $request->get('value'); $locale = $request->get('locale'); $owner = $this->owner($request); $tags = $owner->tags->lists('id'); //why o why did we paginate this? $tags = $tag->with(['translations'])->where(function ($q) use($tags) { if (!empty($tags)) { $q->whereNotIn('id', $tags); } })->whereHas('translations', function ($q) use($value, $locale) { $q->where('locale', $locale); $q->where('name', 'like', '%' . $value . '%'); })->paginate(10); $sorted = new Collection($tags->items()); $sorted = $sorted->sortBy(function ($tag) use($locale) { return $tag->translate($locale)->name; }); $tags = new Paginator($sorted, $tags->perPage(), $tags->currentPage()); return $tags; }
/** * @param Skill $skill * @param Request $request * @param AccountManager $manager * @param Guard $guard * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|Paginator */ public function index(Skill $skill, Request $request, AccountManager $manager, Guard $guard) { $value = $request->get('value'); $locale = $request->get('locale'); $user = $guard->user(); $skills = $user->skills->lists('id')->toArray(); //why o why did we paginate this? $skills = $skill->with(['translations'])->where(function ($q) use($skills) { if (!empty($skills)) { $q->whereNotIn('id', $skills); } })->whereHas('translations', function ($q) use($value, $locale) { $q->where('locale', $locale); $q->where('name', 'like', '%' . $value . '%'); })->paginate(10); $sorted = new Collection($skills->items()); $sorted = $sorted->sortBy(function ($skill) use($locale) { return $skill->translate($locale)->name; }); $skills = new Paginator($sorted, $skills->perPage(), $skills->currentPage()); return $skills; }
/** * Get the current page. * * @return int */ public function getCurrentPage() { return $this->paginator->currentPage(); }
/** * @param Paginator $paginatorData * @param $data * @return mixed */ public function respondWithPagination($paginatorData, $data) { $data = array_merge($data, ['paginator' => ['total_count' => count($paginatorData->items()), 'total_pages' => ceil(count($paginatorData->items()) / $paginatorData->perPage()), 'current_page' => $paginatorData->currentPage(), 'limit' => $paginatorData->count(), 'next_page_url' => $paginatorData->nextPageUrl()]]); return $this->respond($data); }