Метод 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,
который проверяет, есть ли несколько страниц для отображения