Реализовать постраничную разбивку в Yii 2.0 очень просто. Для этого вам нужно внести изменения в контроллер (файл, где вы
путем запроса к Active Record извлекаете данные) и представление (файл, где содержится html-код вывода результата запроса на экран).
Рассмотрим эту задачу на конкретном примере.
БЕЗ ПОСТРАНИЧНОЙ РАЗБИВКИПускай у вас есть модель User (пользователи), имеющая свойства (атрибуты): id, fio, role, is_del
В контроллере вы запросом получаете всех пользователей с ролью 'student' и передаете массив (результат) в представление list (список студентов)
use app\models\User;
public function actionList()
{
$users = User::find()->where(["role"=>'student'])->all();
return $this->render('list', [
'users' => $users
]);
}
а в представлении вы выводите список пользователей
foreach ($users as $user) {
echo "ФИО: " . $user->fio . "<br>";
}
ДОБАВЛЯЕМ ПОСТРАНИЧНУЮ РАЗБИВКУВ контроллере добавляем в секцию use класс use yii\data\Pagination;
Немного переписываем запрос (синтаксис), поскольку нам придется вызвать его 2 раза: для определения общего числа элементов, и для получения выборки.
Создаем объект Pagination, указывая общее число записей, и число записей на странице.
Созданный объект pages также передаем в представление
use app\models\User;
use yii\data\Pagination;
public function actionList()
{
$query = User::find()->where(["role"=>'student']);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count(), 'pageSize'=>20]);
$users = $query->offset($pages->offset)->limit($pages->limit)->all();
return $this->render('list', [
'users' => $users,
'pages' => $pages
]);
}
В представление добавляем код, который выведет ссылки для перехода между страницами
use yii\widgets\LinkPager;
foreach ($users as $user) {
echo "ФИО: " . $user->fio . "<br>";
}
echo LinkPager::widget([
'pagination' => $pages,
]);
Документация на официальном сайте Yii:
yiiframework.com/doc-2.0/yii-data-pagination.html