Yii Framework, постраничная навигация CPaginatio

ли у Вас большое количество страниц (товаров, элементов, …), которые выводятся в списке, то постраничный навигатор для более удобной навигации по сайту Вам просто необходим. На первый взгляд это достаточно сложная задача. Но так как постраничная навигация используется довольно часто, разработчики 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,
    ));
 
    //Ваш код...
 
    ?>

Свойства и настройка CPagination:

СвойствоТипПо умолчаниюОписание
pageVarstringpage Имя переменной GET храненящей текущий номер страницы.
itemCountinteger0 Общее количество элементов.
pageSizeinteger10 Количество элементов на странице.
routestring Маршрут (id контроллера и id действия) для отображения страниц. По умолчанию пустая строка, то есть с использованием текущего маршрута.
limitinteger Предел данных. Устанавливает limit значение SQL выборки данных для текущей страницы. Возвращает то же значение что и pageSize .
offsetinteger Cмещение данных. Устанавливает offset значение SQL выборки данных для текущей страницы.
pageCountinteger Количество страниц.
currentPageinteger0 Базовый индекс постраничного навигатора текущей страницы.
paramsarraynull Массив параметров (имя ⇒ значение), которые должны использоваться вместо GET при генерации URL. По умолчанию null, что означает, использовать доступные в настоящее время параметры GET.