Пагинация массива в Laravel

Пагинация массива в Laravel

Пагинация массива в Laravel

Пагинация массива в Laravel достаточно делается легко при помощи класса LengthAwarePaginator.

// Импортируем класс
use Illuminate\Pagination\LengthAwarePaginator as Paginator;

// Получаем текущую страницу
$currentPage = Paginator::resolveCurrentPage();
// Создаем коллекцию
$collection = collect($categories);
// Задаем кол-во элементов на страницу
$perPage = 15;
// Выбираем элементы для текущей страницы
$currentPageItems = $collection->slice(($currentPage - 1) * $perPage, $perPage);

// Создаем экземпляр класса Paginator
$items = new Paginator($currentPageItems, count($collection), $perPage);
// Указываем URI для генерации ссылок пагинации
$items->setPath($request->url());

// Возвращаем представление
return view('pagination', compact('items'));

В представлении для вывода пагинации используем как и в обычной пагинации $items->links().

<!doctype html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Пагинация массива</title>
</head>
<body>
@foreach($items as $item)
    {{ $item['name'] }} <br>
@endforeach

{{ $items->links() }}

</body>
</html>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *