02.03.2017 2479 0

Основы: Постраничная навигация в 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 name Last name Actions
{{ $author->first_name }} {{ $author->last_name }}                 Edit                 

                                         {{ csrf_field() }}                     Delete                 

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