Создаем пагинатор в Yii 1.0
2010-10-30
В данном посте я покажу как создать пагинатор для отображения записей из таблицы.

Сначала, для примера, таблица данных, записи которых будем отображать.

CREATE TABLE `city` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `title` VARCHAR( 256 ) NOT NULL ,
    `status` INT NOT NULL ,
    INDEX ( `status` ) 
);

Создаем модель

class tableCity extends CActiveRecord
{
    /**
     * Returns the static model of the specified AR class.
     * @return CActiveRecord the static model class
     */
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }

    /**
     * @return string the associated database table name
     */
    public function tableName()
    {
        return Yii::app()->db->tablePrefix.'city';
    }
}

Теперь создаем контроллер

class SomeController extends CController
{
    public function actionSome()
    {
        // критерии выборки из таблицы
        $criteria = new CDbCriteria;
        $criteria->condition = 'status=1'; // для примера я буду показывать записи у которых статус 1
        
        // создаем пагинатор
        $pagination = new CPagination(tableCity::model()->count($criteria));
        $pagination->pageSize = 5; // количество записей на странице
        // добавляем в критерии выборки LIMIT и OFFSET
        $pagination->applyLimit($criteria);
        
        $citys = tableCity::model()->findAll($criteria);
        
        $this->render('some', array(
            'citys'=>$citys,
            'pagination'=>$pagination
        ));
    }
}

Отображение

<?php foreach($citys as $city) : ?>
    <div><?php $city->title ?> - <?php $city->code ?></div>
<?php endforeach ?>
<? $this->widget('CLinkPager',array(
    'pages'=>$pagination,
)) ?>
Вот и все.
www.000webhost.com