Для примера есть ссылка вида
/контроллер/экшен/5
(для пагинации ВЕЗДЕ используется формат ссылок, заканчивающихся на /номер_страницы)
Я для пагинации собираю её так:
$this->uri = dirname($_SERVER['REQUEST_URI']); // тут получаем /контроллер/экшен
$this->current_page = $this->getCurrentPage($current_page); // тут прилетает 5, проверяем-возвращаем
Вывод
public function getHtml()
{
$start_page = $back = $page2left = $page1left = $page1right = $page2right = $forward = $end_page = null;
if ($this->current_page > 3) {
$start_page = "<li class='page-item'><a class='page-link' href='{$this->uri}/1'>«</a></li>";
}
if ($this->current_page > 1) {
$back = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 1) . "'>‹</a></li>";
}
if ($this->current_page - 2 > 0) {
$page2left = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 2) . "'>" . ($this->current_page - 2) . "</a></li>";
}
if ($this->current_page - 1 > 0) {
$page1left = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 1) . "'>" . ($this->current_page - 1) . "</a></li>";
}
if ($this->current_page + 1 <= $this->count_pages) {
$page1right = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 1) . "'>" . ($this->current_page + 1) . "</a></li>";
}
if ($this->current_page + 2 <= $this->count_pages) {
$page2right = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 2) . "'>" . ($this->current_page + 2) . "</a></li>";
}
if ($this->current_page < $this->count_pages) {
$forward = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 1) . "'>›</a></li>";
}
if ($this->current_page < ($this->count_pages - 2)) {
$end_page = "<li class='page-item'><a class='page-link' href='{$this->uri}/{$this->count_pages}'>»</a></li>";
}
return '<nav class="mt-1"><ul class="pagination pagination-sm justify-content-center m-0">' . $start_page . $back . $page2left . $page1left . '<li class="page-item active"><a class="page-link">' . $this->current_page . '</a></li>' . $page1right . $page2right . $forward . $end_page . '</ul></nav>';
}
У меня вопрос: вот этот вариант с
dirname($_SERVER['REQUEST_URI'])
- это подходящее решение? Оно правильно или это какой-то велик для быстрого решения? Просто я такое решение нагуглил если честно, не своими руками делал dirname().