Основы: Постраничная навигация в Laravel за две минуты

Основы: Постраничная навигация в Laravel за две минуты
Основы: Постраничная навигация в Laravel за две минуты

В 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 nameLast nameActions
{{ $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 доступен по ссылке.

Автор

MIIIG

Занимаюсь разработкой сайтов, знаю php, js, html, css, gulp, bash, увлекаюсь разработкой на микроконтроллерах(esp, arduino), перевожу статьи, также увлечен графическим дизайном, типографией, знаю также немного арабский, люблю минимализм, простоту и material design