Пагинация массива в 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>