{{TOC}} {{DOCVER 5.3=c06d6a2352ed8c767633aab9c20f2bf7d880c967 28.01.2017 5:00:51, 5.2=6b0b057ae6de3c88cb29188459e38383c622ec23 8.12.2016 23:00:15, 5.1=cdc24ba7426c5b11eb4d050706bd78c3ea4913cc 19.06.2016 20:08:01, 5.0=5d10040a981deee82c0fde0e8e5d2ffc49eaaecb 8.02.2016 18:09:11}} == Настройка == В некоторых фреймворках страничный вывод может быть большой проблемой. Страничный вывод в Laravel интегрирован с ((//docs/v5/queries построителем запросов)) и ((//docs/v5/eloquent Eloquent ORM)) и обеспечивает удобный, простой в использовании вывод результатов БД. Генерируемый HTML-код совместим с ((http://getbootstrap.com/ CSS-фреймворком Bootstrap)). == Основы использования == === Страничный вывод выборки из БД === Есть несколько способов разделения данных на страницы. Самый простой - используя метод %%paginate()%% на объекте-((docs/v5/queries конструкторе запросов)) или на запросе ((docs/v5/eloquent Eloquent)). Метод %%paginate()%% автоматически позаботится о задании правильных пределов и промежутков на основе текущей просматриваемой пользователем страницы. По умолчанию текущая страница определяется по значению аргумента %%(t)?page%% в HTTP-запросе. Само собой, Laravel автоматически определяет это значение, и так же автоматически вставляет его в ссылки, генерируемые для страничного вывода. В этом примере единственный аргумент метода %%paginate()%% - число элементов на одной странице. Давайте укажем, что мы хотим выводить по **15** элементов на страницу: %% paginate(15); return view('user.index', ['users' => $users]); } } %% .(alert) На данный момент операции страничного вывода, которые используют оператор %%groupBy%%, не могут эффективно выполняться в Laravel. Если вам необходимо использовать %%groupBy%% для постраничного набора результатов, рекомендуется делать запрос в БД и создавать экземпляр страничного вывода вручную. **"Простой страничный вывод"** Если вам необходимо вывести для страничного представления только ссылки "Далее" и "Назад", вы можете использовать метод %%simplePaginate()%% для более эффективных запросов. Для больших наборов данных очень полезно, когда вам не надо отображать номер каждой страницы в вашем представлении: %% $users = DB::table('users')->simplePaginate(15); %% === Страничный вывод запросов Eloquent === Можно также делать постраничный вывод запросов ((/docs/v5/eloquent Eloquent)). В этом примере мы разобьём на страницы модель %%(t)User%% по **15** элементов на странице. Как видите, синтаксис практически совпадает со страничным выводом выборки из БД: %% $users = App\User::paginate(15); %% Разумеется, вы можете вызвать %%paginate()%% после задания других условий запроса, таких как %%(t)where%%: %% $users = User::where('votes', '>', 100)->paginate(15); %% Также вы можете использовать метод %%simplePaginate()%% моделей Eloquent: %% $users = User::where('votes', '>', 100)->simplePaginate(15); %% === Ручное создание экземпляра страничного вывода === Иногда необходимо создать экземпляр страничного вывода вручную, передав ему массив данных. Это можно сделать создав либо экземпляр %%(t)Illuminate\Pagination\Paginator%%, либо экземпляр %%(t)Illuminate\Pagination\LengthAwarePaginator%%, в зависимости от ситуации. Классу %%(t)Paginator%% не надо знать общее количество элементов в конечном наборе, и поэтому класс не должен иметь методы для получения индекса последней страницы. %%(t)LengthAwarePaginator%% принимает почти те же аргументы, что и %%(t)Paginator%%, но ему требуется общее количество элементов в конечном наборе. Другими словами, %%(t)Paginator%% соответствует методу %%simplePaginate()%% на конструкторе запросов и Eloquent, а %%(t)LengthAwarePaginator%% соответствует методу %%paginate()%%. .(alert) При ручном создании экземпляра страничного вывода вы должны вручную "поделить" передаваемый в него массив результатов. Если вы не знаете, как это сделать, используйте PHP-функцию ((https://secure.php.net/manual/en/function.array-slice.php array_slice)). == Отображение результатов страничного вывода == При вызове методов %%paginate()%% и %%simplePaginate()%% на конструкторе запросов или запросе Eloquent вы получите экземпляр страничного вывода. Для метода %%paginate()%% это будет экземпляр %%(t)Illuminate\Pagination\LengthAwarePaginator%%. А для метода %%simplePaginate()%% это будет экземпляр %%(t)Illuminate\Pagination\Paginator%%. Эти объекты предоставляют несколько методов для вывода конечного набора. В дополнение к этим вспомогательным методам экземпляры страничного вывода - итераторы, к ним можно обращаться как к массивам. Итак, когда вы получили результаты, вы можете вывести их и создать ссылки на страницы с помощью ((//docs/v5/blade Blade)): %%