Метод onLastPage
Метод onLastPage класса LengthAwarePaginator
позволяет определить, находится ли пользователь на последней
странице пагинированного набора данных. Метод не принимает
параметров и возвращает булево значение. Это полезно для
условного отображения элементов интерфейса, например,
для скрытия кнопки "Следующая страница" или отображения
сообщения о достижении конца списка.
Синтаксис
<?php
$paginator->onLastPage();
?>
Пример использования в контроллере
Рассмотрим пример, где мы получаем пагинированные статьи и проверяем, находится ли текущая страница на последней:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
$articles = Article::paginate(10);
$isLastPage = $articles->onLastPage();
return view('articles.index', [
'articles' => $articles,
'isLastPage' => $isLastPage,
]);
}
}
?>
Пример в Blade-шаблоне
Давайте используем метод onLastPage в Blade-шаблоне
для условного отображения кнопок навигации:
<div>
@if ($articles->onFirstPage())
<span>Первая страница</span>
@else
<a href="{{ $articles->previousPageUrl() }}">Назад</a>
@endif
@if ($articles->onLastPage())
<span>Последняя страница</span>
@else
<a href="{{ $articles->nextPageUrl() }}">Вперед</a>
@endif
</div>
Пример проверки в контроллере
Используем метод для логики в контроллере:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
$articles = Article::paginate(5);
if ($articles->onLastPage()) {
$message = 'Вы на последней странице';
$res = ['status' => 'last_page', 'message' => $message];
} else {
$res = ['status' => 'not_last', 'message' => 'Есть еще страницы'];
}
return view('articles.index', [
'articles' => $articles,
'res' => $res,
]);
}
}
?>
Пример с постраничной навигацией
Создадим более сложный пример навигации с использованием
метода onLastPage:
<div>
<p>Текущая страница: {{ $articles->currentPage() }}</p>
<p>Всего страниц: {{ $articles->lastPage() }}</p>
@if ($articles->onFirstPage())
<span>Первая страница</span>
@else
<a href="{{ $articles->previousPageUrl() }}">Предыдущая</a>
@endif
@foreach ($articles->getUrlRange(1, $articles->lastPage()) as $page => $url)
@if ($page == $articles->currentPage())
<span>{{ $page }}</span>
@else
<a href="{{ $url }}">{{ $page }}</a>
@endif
@endforeach
@if ($articles->onLastPage())
<span>Последняя страница</span>
@else
<a href="{{ $articles->nextPageUrl() }}">Следующая</a>
@endif
</div>
Смотрите также
-
метод
onFirstPage,
который проверяет нахождение на первой странице -
метод
hasMorePages,
который проверяет наличие следующих страниц -
метод
currentPage,
который возвращает номер текущей страницы -
метод
lastPage,
который возвращает номер последней страницы