Кастомизация пагинации в laravel 5.1
Доброго времени суток. Не так давно я столкнулся с проблемой кастомизации пагинации (постраничного вывода) в Laravel 5.1. Как Вы знаете для того, чтобы вывести блок пагинации (блок постраничной навигации) используется метод render(). Но мне как раз необходимо было изменить вид данного блока. И вот как я поступил…
Создал отдельный шаблон для отображения блока пагинации (постраничной навишации) paginate.blade.php
<?php $total=$paginate->total(); $perPage = $paginate->perPage(); $lastPage = ceil($total/$perPage); $curPage = $paginate->currentPage(); ?> <nav> <ul class="pagination"> <?php $url = $paginate->url(1) ?> <li @if($curPage ==1 )class="disabled"@endif> <a aria-label="Previous" href="{{ $url }}"> <span aria-hidden="true">«</span> </a> </li> <?php $p=1 ?> @while($p<=$lastPage) <?php $url = $paginate->url($p) ?> <li @if($curPage == $p) class="active" @endif> <a href="{{ $url }}"> {{ $p }} @if($curPage == $p) <span class="sr-only">(current)</span> @endif </a> </li> <?php $p=$p+1; ?> @endwhile <?php $url = $paginate->url($lastPage) ?> <li @if($curPage == $lastPage )class="disabled"@endif> <a aria-label="Next" href="{{ $url }}" > <span aria-hidden="true">»</span> </a> </li> </ul> </nav>
А в самом шаблоне, где мы хотим вывести блок постраничной навигации вставляем следующий код:
@include('admin.common.paginate',['paginate'=>$staff->appends(Input::except('page'))])
Теперь объясню сам код. При подключении шаблона блока пагинации, мы передаем в переменную paginate набор элементов для пагинации. С помощью appends(Input::except(‘page’)) мы в пагинацию передаем параметры, если они были при запросе. Это необходимо для того, чтобы при постраничной навигации они тоже передавались.
Рассмотрим сам шаблон пагинации.
- Метод total() — возвращает общее количество элементов полученных в запросе.
- Метод perPage() — возвращает количество элемнтов отображаемых на странице
- Метод currentPage() — возвращает номер текущей страницы.
- Метод url($page) – возвращает url страницы с номером $page
Вот в принципе и все, а вид блока постраничной навигации Вы уже можете сделать сами в зависимости от требований.
PS: Со всеми методами пагинации в Laravel 5.1 вы может познакомиться на странице API Laravel 5.1.