Пагинация
Состав компонента
Использование в контроллере
use Johncms\Http\PageMeta;
use Johncms\Http\Pagination\PaginationFactory;
use Johncms\Http\Pagination\PaginationGuard;
// В конструкторе контроллера: PaginationFactory $paginationFactory, PaginationGuard $paginationGuard
// 1. Строим пагинацию из общего количества записей (дешёвый COUNT-запрос).
$pagination = $this->paginationFactory->create($this->listUseCase->count());
// 2. Редирект с неканонических страниц.
$redirectUrl = $this->paginationGuard->redirectUrl($pagination);
if ($redirectUrl !== null) {
redirect($redirectUrl);
}
// 3. Получаем срез данных по limit/offset из пагинации.
$items = $this->listUseCase->getPage($pagination->getPerPage(), $pagination->getOffset());
// 4. Строим мета-данные страницы и рендерим HTML пагинации.
$meta = new PageMeta($pageTitle, $pagination->getCurrentPage());
return $this->render->render('module::index', [
'title' => $meta->title,
'description' => $meta->description,
'items' => $items,
'pagination' => $pagination->render(),
]);Параметры PaginationFactory::create()
PaginationFactory::create()Канонические URL страниц
Разделение use case / репозиторий
Рендеринг
Заголовок и описание страницы (PageMeta)
Последнее обновление
Это было полезно?