Builder
Пагинация
Пагинация коллекций - это методы организации длинных списков или наборов данных на веб-страницах, который позволяет пользователям просматривать содержимое по частям. Вместо того, чтобы загружать все элементы одновременно, пагинация разбивает их на отдельные страницы с фиксированным количеством элементов на каждой странице.
Этот подход имеет несколько преимуществ. Во-первых, он ускоряет загрузку страницы и уменьшает нагрузку на сервер, поскольку только необходимые данные загружаются по мере необходимости. Во-вторых, он облегчает навигацию по длинным спискам, позволяя пользователям быстро перемещаться между страницами.
Кроме того, пагинация позволяет различным пользователям просматривать определенные страницы одновременно, что может быть полезно при работе с большими объемами данных. Например, это может быть удобно для разделения контента на страницы блога или списка товаров в интернет-магазине.
Класс CollectionPaginate наследует класс Collection и расширяет его функциональность
- Настройка пагинатора
- Получение текущей страницы (currentPage)
- Получение количества элементов (total)
- Получение сформированного кода страниц (links)
- Установка url страниц (withPath)
- Установка параметров страниц (appends)
Настройки пагинатора
Некоторые параметры пагинатора можно переопределить<?php namespace App\Models; use MotorORM\Builder; class Model extends Builder { // Переопределение имени страниц protected ?string $paginateName = 'page'; // Переопределение базового шаблона со страницами protected ?string $paginateView = __DIR__ . '/../../resources/views/app/_paginator.php'; }
Получение текущей страницы (currentPage)
Метод currentPage() возвращает текущую страницу:$pages = Model::query()->paginate(10); $pages->currentPage(); // 1
Получение количества элементов (total)
Метод total() возвращает общее количество элементов:$pages = Model::query()->paginate(10); $pages->total(); // 12
Получение сформированного кода страниц (links)
Метод links() возвращает сформированный блок html со списком страниц:$pages = Model::query()->paginate(10); $pages->links(); /* <nav> <ul class="pagination"> <li class="page-item active"><span class="page-link">1</span></li> <li class="page-item"><a class="page-link" href="?page=2">2<a><li> <li class="page-item"><a class="page-link" href="?page=2">»<a><li> </ul> </nav> */
Установка url страниц (withPath)
По умолчанию ссылки, сгенерированные пагинатором, будут соответствовать URI текущего запроса.Однако метод пагинатора withPath() позволяет настроить URI, используемый пагинатором при создании ссылок.
$pages = Model::query()->paginate(10); $pages->withPath('/admin/users'); // /admin/users?page=N
Установка параметров страниц (appends)
Вы можете добавить к ссылке на страницы дополнительные параметры, используя метод appends().$pages = Model::query()->paginate(10); $pages->appends(['sort' => 'votes']); // /admin/users?page=N&sort=votes