Yii2 pagination

Yii2 pagination

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы с вами рассмотрим вопрос Yii2 pagination, т.е. использование постраничной навигации на сайте.

Итак, в этой статье мы рассмотрим работу с постраничной навигацией на сайте и используем для этого класс Pagination. Использование данного класса может нам потребоваться для пользовательской части сайта в тех разделах, где присутствуют большие массивы данных. Например, это может быть каталог товаров или лента новостей и т.п. Сразу стоит оговориться, что в админской части сайта, где используются виджеты данных, можно использовать провайдер данных и в этом случае будет автоматически сформирована постраничная разбивка данных. Однако, пользовательской части сайта виджеты данных используются редко и там проще воспользоваться классом Pagination.

К примеру, давайте выведем все посты нашего сайта. Для этого в контроллере мы получим их и передадим в представление:

И в представлении выведем данные с нужным оформлением:

Yii2 pagination

В результате мы получили вывод наименований всех имеющихся статей. Сейчас статей немного, всего 21 в моем случае. А представьте, если их будет сотня или тысяча? Или еще больше? В этом случае пользователь получит длиннющую страницу со всеми статьями. А если статей достаточно большое количество, то такая страница будет загружаться очень долго.

Вот для таких случаев как раз и необходима постраничная разбивка данных, когда на первой странице представлена первая «порция» данных, а на следующие «порции» мы даем ссылки в виде постраничной навигации (пагинации).

Давайте немного перепишем код получения данных, обратившись к классу Pagination.

В представление добавим использование виджета LinkPager, который построит постраничную навигацию:

И в итоге мы получим теперь только часть данных (по умолчанию это 20 записей), а следующие части будут доступны по ссылкам сгенерированной постраничной навигации.

Yii2 pagination

Поскольку у меня количество записей – 21, а по умолчанию класс Pagination выбирает по 20 записей на страницу, — мы получили две страницы: на первой странице выводятся первые 20 записей, на второй – оставшаяся последняя. Давайте попробуем немного настроить пагинацию. Например, 20 записей на страницу может быть достаточно много, давайте уменьшим это число до 5 записей на страницу. Для этого используем параметр pageSize с необходимым значением:

Yii2 pagination

Отлично, работает! Давайте попробуем походить по страницам и убедимся, что пагинация работает. Она работает, но вот URL в адресной строке возможно вы захотите поменять. По умолчанию он выглядит примерно так:

Yii2 pagination

Давайте попробуем добиться такого варианта — //yii2/post/page/2. Для этого добавим еще пару параметров к настройкам:

И пару правил для маршрутов в файл config/web.php:

Yii2 pagination

После этого ссылки пагинации должны принять нужным нам вид:

Yii2 pagination

На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Метки:

Похожие статьи:

Комментарии Вконтакте: