РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
886 of 1392 menu

LengthAwarePaginator

Класс LengthAwarePaginator используется для создания пагинации, которая содержит полную информацию о всех страницах. В отличие от Paginator, этот класс знает общее количество элементов и общее количество страниц, что позволяет выводить полную навигацию с номерами страниц. Обычно он возвращается методами paginate и simplePaginate.

При создании экземпляра класса в конструктор передаются следующие параметры: коллекция элементов для текущей страницы, общее количество элементов, количество элементов на странице, номер текущей страницы и массив опций для построения URL.

Синтаксис

<?php use Illuminate\Pagination\LengthAwarePaginator; new LengthAwarePaginator( $items, $total, $perPage, $currentPage, $options ); ?>

Пример

Давайте создадим пагинатор для массива из 50 элементов, выводя по 10 элементов на страницу:

<?php namespace App\Http\Controllers; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Http\Request; class ArticleController extends Controller { public function index(Request $request) { $data = array_fill(0, 50, 'article'); $perPage = 10; $currentPage = $request->get('page', 1); $offset = ($currentPage - 1) * $perPage; $items = array_slice($data, $offset, $perPage); $res = new LengthAwarePaginator( $items, count($data), $perPage, $currentPage, ['path' => $request->url()] ); return view('articles.index', ['res' => $res]); } } ?>

Пример

Давайте выведем информацию о пагинации в Blade-шаблоне:

<div> @foreach ($res as $item) <p>{{ $item }}</p> @endforeach <p>Всего записей: {{ $res->total() }}</p> <p>Всего страниц: {{ $res->lastPage() }}</p> <p>Текущая страница: {{ $res->currentPage() }}</p> </div>

Пример

Давайте получим ссылки на все страницы для навигации:

<div> @foreach ($res as $item) <p>{{ $item }}</p> @endforeach @if ($res->hasPages()) <div> @if (!$res->onFirstPage()) <a href="{{ $res->previousPageUrl() }}">Назад</a> @endif @for ($i = 1; $i <= $res->lastPage(); $i++) <a href="{{ $res->url($i) }}">{{ $i }}</a> @endfor @if ($res->hasMorePages()) <a href="{{ $res->nextPageUrl() }}">Вперёд</a> @endif </div> @endif </div>

Пример

Давайте используем встроенный метод links для вывода готовой навигации:

<div> @foreach ($res as $item) <p>{{ $item }}</p> @endforeach {{ $res->links() }} </div>

Пример

Давайте используем метод appends для добавления дополнительных параметров запроса к ссылкам:

<div> @foreach ($res as $item) <p>{{ $item }}</p> @endforeach {{ $res->appends(['search' => 'laravel'])->links() }} </div>

Смотрите также

  • метод paginate,
    который возвращает экземпляр LengthAwarePaginator
  • метод simplePaginate,
    который возвращает экземпляр Paginator
  • метод links,
    который генерирует HTML-ссылку навигации
  • метод appends,
    который добавляет параметры запроса к ссылкам пагинации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить