Для вызова в контроллере необходимо указывать:
use Rudra\Pagination;
use App\Containers\Web\Models\Test;
Необходимо задать данные для постраничного разбиения, где 1 - текущая страница, 10 - количество выводимых материалов, Test::numRows() - общее количество строк в таблице.
$pagination = new Pagination(1, 10, Test::numRows());
Результат:
^ Rudra\Pagination {#39 ▼
-page: 0
-count: 1
-perPage: 10
}
Получение результата запроса для первой страницы из базы данных:
$paginated = Test::getAllPerPage($pagination);
С указанием своего набора полей:
$paginated = Test::getAllPerPage($pagination, 'id, title');
Получение массива с номерами страниц:
$pagination->getLinks();
Для отображения в шаблоне необходимо передать следующие параметры, links - массив с полученных страниц, current_page - текущая страница, page_limit - количество отображаемых ссылок.
data([
"content" => view("index", [
"rows" => $paginated,
"links" => $pagination->getLinks(),
"current_page" => $page,
"page_limit" => 2,
]),
]);
Пример формирования html для UIKit
public static function renderLinks(array $links, string $page, $pg_limit, $uri)
{
$last = array_key_last($links) + 1;
?>
<!-- FIRST -->
<?php if ($links[0] != $page): ?>
<li class="page-item"><a href="<?= Rudra::config()->get("url") ?><?= $uri . $links[0] ?>" class="page-link"><<</a></li>
<?php endif; ?>
<?php foreach ($links as $link): ?>
<?php if (($link < $page) && ($link >= ($page - $pg_limit))): ?>
<li class="page-item"><a href="<?= Rudra::config()->get("url") ?><?= $uri . $link ?>" class="page-link"><?= $link ?></a></li>
<?php endif; ?>
<?php if ($link == $page): ?>
<li class="page-item uk-active"><a href="<?= Rudra::config()->get("url") ?><?= $uri . $link ?>" class="page-link"><?= $link ?></a></li>
<?php endif; ?>
<?php if (($link > $page) && ($link <= ($page + $pg_limit))): ?>
<li class="page-item"><a href="<?= Rudra::config()->get("url") ?><?= $uri . $link ?>" class="page-link"><?= $link ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
<!-- LAST -->
<?php if ($last != $page): ?>
<li class="page-item"><a href="<?= Rudra::config()->get("url") ?><?= $uri . $last ?>" class="page-link">>></a></li>
<?php endif; ?>
<?php
}