Пагинация возможна в Yii посредством использования класса CPagination. Он представляет собой удобный инструмент для реализации пагинации на веб-страницах. CPagination позволяет устанавливать количество элементов на страницу и общее число элементов, а также извлекать необходимые элементы из источника данных.
Для начала необходимо создать объект CPagination и передать ему общее количество элементов и количество элементов на страницу:
$pagination = new CPagination($totalItemCount); $pagination->pageSize = $pageSize;
Здесь $totalItemCount
- это общее количество элементов, а $pageSize
- количество элементов на страницу.
Далее, необходимо настроить источник данных, с которого будут извлекаться элементы для текущей страницы. Это может быть, например, модель или SQL-запрос. Вызовите метод getData
объекта пагинации, чтобы получить элементы для текущей страницы:
$data = $dataProvider->getData($pagination);
Здесь $dataProvider
- это источник данных, который может быть объектом CActiveDataProvider или CArrayDataProvider.
После этого можно процессить элементы, как обычно:
foreach($data as $item) { // процессинг элемента }
Для отображения числа страниц и ссылок на предыдущую и следующую страницы можно использовать виджет CLinkPager. Необходимо создать объект CLinkPager, передать ему объект пагинации и вывести виджет на странице:
$pages = new CPagination($totalItemCount); $pages->pageSize = $pageSize; $pages->applyLimit($criteria); $this->widget('CLinkPager', array( 'pages' => $pages ));
$criteria
- это объект CDbCriteria, который используется для построения SQL-запроса.
CLinkPager автоматически создаст ссылки на страницы, включая кнопки "Предыдущая" и "Следующая". Также можно настроить вывод дополнительных ссылок и номеров страниц, указав соответствующие свойства CLinkPager.
В конечном итоге, пагинация в Yii позволяет создавать удобные и гибкие интерфейсы для навигации по большим наборам данных. Она облегчает работу с пагинацией и позволяет эффективно управлять общим количеством элементов и количеством элементов на страницу.