Рубрики
Software

Пагинация в Laravel

Тот, кто хоть раз сам писал код для пагинации или постраничного вывода чего-либо, определенно любит фреймворки :-). По крайней мере, меня очень порадовало создание пагинации на Laravel 5.5.4. Данный материал скорее пост радости, нежели сборник каких-то полезных моментов по работе с Laravel.

Если кратко, то чтобы создать пагинацию нужно в 2 шага:

  1. Отредактировав контроллер.
  2. Изменив шаблон вывода.
  3. Все, что нужно знать о пагинации в Laravel, написано в справке.

В контроллере можно использовать два метода: paginate() и simplePaginate(). Первый имеет немного больше возможностей, а второй более эффективный и выводит только 2 кнопки: вперед и назад. Количество элементов на странице указываем в скобках. Пример:

$users = DB::table('users')->paginate(15);
// в шаблон передаем $users

После этого, получим 15 пользователей на странице. Блока с пагинацией еще нет, так как не редактировали шаблон вывода. Чтобы вывести кнопки вперед — назад, редактируем view. В нужное нам место прописываем код:

{{ $users->links() }}

Собственно, на этом все. Данный код выведет 2 кнопки пагинации, а страницы в урле будут отличаться параметром ?page=. Вот так, всего за несколько минут можно создать пагинацию для абсолютно любых объектов в Laravel.

Внешний вид пагинации

Если нужен более стильный блок с пагинацией, изменяем представление стандартных блоков. Для этого в CLI пишем:

php artisan vendor:publish --tag=laravel-pagination

Данная команда создаст представления в папке resources/views/vendor/pagination. По умолчанию используется default.blade.php, и его можно отредактировать на свой вкус. Также, можно подключить представления на фреймворке Bootstrap. Их перечень будет в этой же папке. Чтобы указать шаблон пагинатора, необходимо явно указать шаблон:

{{ $users->links('vendor.pagination.simple-bootstrap-4')}}

Все, что нужно знать о пагинации в Laravel, написано в справке. Кстати, там же расписаны методы пагинатора, если вы заходите вывести общее количество элементов или еще что-то.