Для вывода списка записей в Yii 2.x используют виджет ListView. Виджет ListView не только выводит список записей, но так же организовывает постраничную навигацию, сортировку и фильтрацию списка. За основу берем таблицу Country (Страны) известную нам из предыдущих 3 статей. Таблица состоит из следующих полей: номер (id), название страны (name), количество жителей (number) и площадь (area).
Для выбора всех стран в контроллер добавляем следующую функцию:
public function actionDataWidget() { $dataProvider = new ActiveDataProvider([ 'query' => Country::find(), // выборка всех записей 'pagination' => [ 'pageSize' => 20, // 20 записей на страницу ], ]); return $this->render('datawidget', [ 'dataProvider' => $dataProvider // передаем данные в преставление ]); }
Преставление: datawidget.php
use yii\widgets\ListView; echo ListView::widget([ 'dataProvider' => $listDataProvider, // переданные данные 'itemView' => '_list',// шаблон для вывода данных 'options' => [ // настройка атрибутов для внешнего контейнера списка 'tag' => 'div', // заключаем сипсок в блок div 'class' => 'country-list', // класс блока div 'id' => 'country-list', // идентификатор блока div ], 'layout' => "{pager}\n{summary}\n{items}\n{pager}", // выводим постраничную навигацию вначале и в конце списка, общее количесвто элементов и количестов элементов показанных на странице и сам список 'summary' => 'Показано {count} из {totalCount}', // шаблон для summary 'summaryOptions' => [ // опции для раздела количество элементов 'tag' => 'span', // заключаем summary в тег span 'class' => 'summary' // добавлем класс summary ], 'itemOptions' => [ // опции для списка 'tag' => 'div', // заключаем список в тег div 'class' => 'country', назначаем класс country ], 'emptyText' => 'Список пуст', // выводим 'Список пуст', если даннах нет 'emptyTextOptions' => [ // опции для пустого контейнера 'tag' => 'p' // добавляем тег абзаца для пустого контейнера ], 'pager' => [ // постраничная разбивка 'firstPageLabel' => 'Первая', // ссылка на первую страницу 'lastPageLabel' => 'Последняя', // ссылка на последнюю странцу 'nextPageLabel' => 'Следующая', // ссылка на следующую странцу 'prevPageLabel' => 'Предыдущая', // ссылка на предыдущую странцу 'maxButtonCount' => 5, // количество отображаемых страниц ], ]);
Преставление: _list.php
use yii\helpers\Html; echo $model->id; // выводим номер echo Html::encode($model->name); // выводим название страны echo Html::encode($model->count); // выводим количество жителей echo Html::encode($model->area); // выводим площадь