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

Метод links

Метод links класса LengthAwarePaginator генерирует HTML-код со ссылками на страницы для пагинированных наборов данных. Он автоматически создает навигационную панель с номерами страниц, ссылками "Вперед" и "Назад", а также индикатором текущей страницы. Метод возвращает экземпляр Illuminate\Support\HtmlString, который преобразуется в HTML при выводе.

Синтаксис

<?php $paginator->links($view, $data); ?>

Параметр $view (необязательный) - имя пользовательского шаблона для оформления навигации. Параметр $data (необязательный) - массив данных, передаваемых в шаблон.

Пример

В контроллере получаем пагинированный список и передаем его в представление:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function index() { $articles = Article::paginate(15); return view('articles.index', ['articles' => $articles]); } } ?>

В Blade-шаблоне выводим ссылки навигации методом links:

@foreach ($articles as $article) <div> <h2>{{ $article->title }}</h2> <p>{{ $article->text }}</p> </div> @endforeach <div class="pagination"> {{ $articles->links() }} </div>

Результат выполнения кода (HTML-структура навигации):

<div class="pagination"> <nav> <ul class="pagination"> <li class="page-item disabled"><span class="page-link">« Previous</span></li> <li class="page-item active"><span class="page-link">1</span></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=4">4</a></li> <li class="page-item"><a class="page-link" href="?page=2">Next »</a></li> </ul> </nav> </div>

Пример

Использование метода links с параметром onEachSide для ограничения количества отображаемых ссылок:

<?php use App\Models\Article; $articles = Article::paginate(10); $links = $articles->onEachSide(1)->links(); ?>

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

<nav> <ul class="pagination"> <li class="page-item"><a class="page-link" href="?page=4">4</a></li> <li class="page-item active"><span class="page-link">5</span></li> <li class="page-item"><a class="page-link" href="?page=6">6</a></li> </ul> </nav>

Пример

Кастомизация внешнего вида навигации с использованием собственного шаблона. Создадим шаблон pagination.custom:

@if ($paginator->hasPages()) <div class="custom-pagination"> @if ($paginator->onFirstPage()) <span class="disabled">Назад</span> @else <a href="{{ $paginator->previousPageUrl() }}">Назад</a> @endif @foreach ($elements as $element) @if (is_string($element)) <span class="dots">{{ $element }}</span> @endif @if (is_array($element)) @foreach ($element as $page => $url) @if ($page == $paginator->currentPage()) <span class="active">{{ $page }}</span> @else <a href="{{ $url }}">{{ $page }}</a> @endif @endforeach @endif @endforeach @if ($paginator->hasMorePages()) <a href="{{ $paginator->nextPageUrl() }}">Вперед</a> @else <span class="disabled">Вперед</span> @endif </div> @endif

Использование кастомного шаблона в контроллере:

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

В Blade-шаблоне передаем имя кастомного представления в метод links:

@foreach ($articles as $article) <div> <h2>{{ $article->title }}</h2> <p>{{ $article->text }}</p> </div> @endforeach <div class="custom-pagination-wrapper"> {{ $articles->links('pagination.custom') }} </div>

Результат выполнения кода (HTML-структура с кастомными классами):

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

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

  • класс LengthAwarePaginator,
    который предоставляет полную информацию о пагинации
  • метод withQueryString,
    который сохраняет параметры запроса в ссылках пагинации
  • метод appends,
    который добавляет параметры к ссылкам пагинации
  • метод fragment,
    который добавляет якорь к ссылкам пагинации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить