ли у Вас большое количество страниц (товаров, элементов, …), которые выводятся в списке, то постраничный навигатор для более удобной навигации по сайту Вам просто необходим. На первый взгляд это достаточно сложная задача. Но так как постраничная навигация используется довольно часто, разработчики Yii Framework позаботились о том, что бы максимально упростить ее.
В первой части статьи речь пойдет о Yii CPagination, который позволяет нам очень просто разбить список записей на страницы (блоки) для постраничного навигатора сайта.
И так перейдем к примеру работы с Yii CPagination и описанию его свойств.
Пример постраничного навигатора.
В контроллере:
<?php class PostController extends Controller { //Ваш код... function actionIndex() { $criteria = new CDbCriteria(); $criteria->condition = 'visibility="1"'; $criteria->order = 'date DESC, id DESC'; $count = Post::model()->count($criteria); $pagination = new CPagination($count); $pagination->pageSize = 20; // Количество элементов на страницу //$pagination->pageVar = 'p'; // Имя GET переменной хранения текущего индекса страницы. По умолчанию 'page'. Пример: /post/page/3 $pagination->applyLimit($criteria); //$pagination->route = '/post/index'; //маршрут для отображения постраничной навигации. По умолчанию текущая страница. $model = Post::model()->findAll($criteria); $this->render('index', array( 'model' => $model, 'pagination' => $pagination )); } //Ваш код... } ?>
Шаблон view:
<?php //Ваш код... //Вывод постраничного навигатора $this->widget('CLinkPager', array( 'pages' => $pagination, )); //Ваш код... ?>
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
| pageVar | string | page | Имя переменной GET храненящей текущий номер страницы. |
| itemCount | integer | 0 | Общее количество элементов. |
| pageSize | integer | 10 | Количество элементов на странице. |
| route | string | Маршрут (id контроллера и id действия) для отображения страниц. По умолчанию пустая строка, то есть с использованием текущего маршрута. | |
| limit | integer | Предел данных. Устанавливает limit значение SQL выборки данных для текущей страницы. Возвращает то же значение что и pageSize . |
|
| offset | integer | Cмещение данных. Устанавливает offset значение SQL выборки данных для текущей страницы. |
|
| pageCount | integer | Количество страниц. | |
| currentPage | integer | 0 | Базовый индекс постраничного навигатора текущей страницы. |
| params | array | null | Массив параметров (имя ⇒ значение), которые должны использоваться вместо GET при генерации URL. По умолчанию null, что означает, использовать доступные в настоящее время параметры GET. |