Вывод списка записей с помощью виджета ListView в 2.x

Для вывода списка записей в 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);   // выводим площадь