Постраничную навигацию мы можем создать с помощью метода paginate()
, входящего в состав конструктора Eloquent
public function index() { $data = Product::paginate(5); return view('product.index',compact('data')); }
Кроме метода paginate
для реализации постраничной навигацией можно воспользоваться методом simplePaginate
:
$users = DB::table('users')->simplePaginate(15);
Результат выполнения этих методов - массив объектов и объект пагинации, который может быть передан в элементы представления.
В файлах blade
кроме диррективы @foreach
, мы можем использовать встроенный метод links()
, который привязывается к объекту $products
, и содержит ссылки на другие страницы.
@foreach($products as $key => $product) // @endforeach {!! $products->links() !!}
Теперь мы можем запустить и проверить этот пример. Если мы используем начальную загрузку, необходимо добавить useBootstrap() к поставщику услуг, как показано ниже:
namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Pagination\Paginator; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { } /** * Bootstrap any application services. * * @return void */ public function boot() { Paginator::useBootstrap(); } }
При необходимости, мы можем к запросам пагинации добавлять свои request-запросы
{!! $data->appends(['sort' => 'votes'])->links() !!} OR {!! $data->appends(Request::all())->links() !!}
Методы постраничной навигации можем исполозовать и в API. С той лишь разницей, что в API полученный объект выводим в формате JSON.
$data = Category::paginate(request()->all()); return Response::json($data, 200);