РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
893 of 1392 menu

Метод onFirstPage

Метод onFirstPage класса LengthAwarePaginator применяется к объекту пагинации для проверки того, находится ли текущая страница на первой позиции. Метод возвращает логическое значение: если текущая страница первая, возвращается true, в противном случае возвращается false. Метод не принимает никаких параметров и может быть использован в Blade-шаблонах для управления отображением элементов навигации.

Синтаксис

<?php $paginator->onFirstPage(); ?>

Пример использования в контроллере

Давайте создадим контроллер, который получает список статей с пагинацией и передаёт их в представление. В контроллере мы также проверяем, находится ли пользователь на первой странице:

<?php namespace AppHttpControllers; use AppModelsArticle; use Illuminate\Http\Request; class ArticleController extends Controller { public function index() { $articles = Article::paginate(10); $onFirstPage = $articles->onFirstPage(); return view('articles.index', [ 'articles' => $articles, 'onFirstPage' => $onFirstPage ]); } } ?>

Пример в Blade-шаблоне

В Blade-шаблоне мы используем метод onFirstPage для условного отображения кнопки "Назад". Если мы находимся на первой странице, кнопка будет отключена:

<div class="pagination"> @if ($articles->onFirstPage()) <span class="disabled">Назад</span> @else <a href="{{ $articles->previousPageUrl() }}">Назад</a> @endif @foreach ($articles->links()->elements as $element) {{-- Вывод элементов пагинации --}} @endforeach @if ($articles->onLastPage()) <span class="disabled">Вперёд</span> @else <a href="{{ $articles->nextPageUrl() }}">Вперёд</a> @endif </div>

Результат выполнения кода при нахождении на первой странице:

<div class="pagination"> <span class="disabled">Назад</span> <a href="/?page=1">1</a> <a href="/?page=2">2</a> <a href="/?page=3">3</a> <a href="/?page=2">Вперёд</a> </div>

Результат выполнения кода при нахождении на второй странице:

<div class="pagination"> <a href="/?page=1">Назад</a> <a href="/?page=1">1</a> <a href="/?page=2">2</a> <a href="/?page=3">3</a> <a href="/?page=3">Вперёд</a> </div>

Пример с условием для стилей

Используем метод onFirstPage для добавления активного класса к текущей странице или изменения стилей элементов навигации:

<nav aria-label="Навигация по страницам"> <ul class="pagination"> <li class="page-item {{ $posts->onFirstPage() ? 'disabled' : '' }}"> <a class="page-link" href="{{ $posts->previousPageUrl() }}" aria-label="Предыдущая"> <span aria-hidden="true">«</span> </a> </li> @foreach ($posts->links()->elements[0] as $page => $url) <li class="page-item {{ $page == $posts->currentPage() ? 'active' : '' }}"> <a class="page-link" href="{{ $url }}">{{ $page }}</a> </li> @endforeach <li class="page-item {{ $posts->onLastPage() ? 'disabled' : '' }}"> <a class="page-link" href="{{ $posts->nextPageUrl() }}" aria-label="Следующая"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav>

Результат выполнения кода при нахождении на первой странице:

<nav aria-label="Навигация по страницам"> <ul class="pagination"> <li class="page-item disabled"> <a class="page-link" href="#" aria-label="Предыдущая"> <span aria-hidden="true">«</span> </a> </li> <li class="page-item active"> <a class="page-link" href="/?page=1">1</a> </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=3">3</a> </li> <li class="page-item"> <a class="page-link" href="/?page=2" aria-label="Следующая"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav>

Смотрите также

  • метод onLastPage,
    который проверяет, находится ли текущая страница на последней
  • метод hasMorePages,
    который проверяет, есть ли ещё страницы после текущей
  • метод currentPage,
    который возвращает номер текущей страницы
  • метод hasPages,
    который проверяет, есть ли несколько страниц для отображения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить