/** * Register bindings in the container. * * @return void */ public function boot() { view()->composer('frontend.layout', function ($view) { $contentPages = Cache::remember('contentPages', 10, function () { return Page::sorted()->whereNull('parent_id')->with(['childs.pageable', 'childs.parent', 'pageable'])->get(); }); $view->with('contentPages', $contentPages); }); }
/** * @param Page $pagerCurrentPage * @return IlluminateCollection */ protected function getPager($pagerCurrentPage) { $pagerCurrentPage = $pagerCurrentPage->id ? $pagerCurrentPage : Page::sorted()->visible()->first(); $pager = new IlluminateCollection(); $pager->push($pagerCurrentPage); // e.g. page 6 /** @var Collection $previousPages */ $previousPages = $pagerCurrentPage->previous(4)->visible()->with(['pageable', 'parent'])->get(); // 5 4 3 2 /** @var Collection $nextPages */ $nextPages = $pagerCurrentPage->next(4)->visible()->with(['pageable', 'parent'])->get(); // 7 8 9 10 do { $prevPage = $previousPages->shift(); if ($prevPage) { $pager->prepend($prevPage); } $nextPage = $nextPages->shift(); if ($nextPage) { $pager->push($nextPage); } } while ($pager->count() < 5 && ($previousPages->count() > 0 || $nextPages->count() > 0)); return $pager; }
public function index() { return view('dashboard.page.index', ['pages' => Page::sorted()->with('parent')->get()]); }