В Laravel существует огромное множество встроенных полезных функций, и одна из них — это простая постраничная навигация. Проверим, как она работает.
Допустим у нас есть список авторов.
/app/Http/Controllers/ AuthorsController.php
public function index() { $authors = Author::all(); return view('authors.index', compact('authors')); }
И /resources/views/authors/ index.blade.php:
@forelse($authors as $author) @empty @endforelse
First name | Last name | Actions |
---|---|---|
{{ $author->first_name }} | {{ $author->last_name }} | {{ csrf_field() }} |
No entries found. |
Взглянем на результат.
А что если у нас будет больше записей и возникнет необходимость в навигации?
Во первых, вместо all() используем метод paginate() в контроллере:
public function index() { $authors = Author::paginate(5); return view('authors.index', compact('authors')); }
Затем — чтобы отображать навигацию в файле resources/views/authors/ index.php мы используем метод links():
... {{ $authors->links() }}
Если у нас только 1-5 записей, то мы ничего не увидим, но если записей больше, то мы увидим следующее:
Теперь, нажав на следующую страницу или стрелку справа, мы действительно перейдем на нее!
Как видно из ссылки в строке браузера, добавляется параметр GET, т.е. нет необходимости что-либо добавлять в коде. Прекрасно, не так ли?
Конечно же, вы можете применять дополнительную кастомизацию с этой функцией — переместить длину страницы в конфиг, изменять параметры URL и добавлять свои собственные, применять различные стили и т.д. Можете попробовать сами. Дополнительную информацию вы найдете в официальной документации.
Статью перевел timurziev. Оригинал на Laraveldaily.com доступен по ссылке.