Кто поможет с пагинацией Yii?

Здравствуйте, есть проблема с виджетом ListView и пагинацией. Суть в том, что есть вывод товаров на сайте и почему-то количество страниц пагинации формируется неверно, а именно ровно 50% лишних страниц, которые пустые. Может кто-то с подобным сталкивался, прошу помочь.

View
$this->widget('bootstrap.widgets.BsListView', array(
    'dataProvider'=>$model->search(),
              'ajaxUpdate' => true,
    'itemView'=>'application.views.shopProducts._view',
    'enablePagination' => true,
                'id'=>$name,
    'itemsCssClass'=>'items table table-striped table-condensed',
    'emptyText'=>'<i> Нет продуктов.</i>',
      'template' => '<div class="row">{items}</div>{pager}'


Controller
public function actionSearch() {

                $model = new ShopProducts('search');
                $model->unsetAttributes();  // clear any default values
                $model->main_category = ShopCategory::model()->findByAttributes(array('alias'=>$_GET['alias']));
                $model->main_category = $model->main_category->id;
                if(!isset($_GET['brand']) && is_array($_GET['brand']))
                        $cats = ShopCategory::getAllSubCategories($model->main_category);


                if (isset($_GET['ShopProducts']))
                        $model->attributes = $_GET['ShopProducts'];

                         if(!isset($_GET['brand']) && is_array($_GET['brand']))$model->withInCategory($cats);
                        $model->withPrice()->withMainPhoto();


                if(isset($_GET['brand']) && is_array($_GET['brand'])){

                        $shopCat = array();


                        foreach ($_GET['brand'] as $item) {

                                $v = ShopCategory::getAllSubCategories($item);

                                foreach($v as $k){
                                        $shopCats[] = $k;
                                }
                                $allCats = array_merge($shopCat, $shopCats);
                                $model->withInCategory($allCats);
                        }


                }

                if(isset($_GET['liquid']) && is_array($_GET['liquid'])){

                        $model->liquid = implode(', ', $_GET['liquid']);

                }

                if(isset($_GET['plant']) && is_array($_GET['plant'])){

                        $model->plant = implode(', ', $_GET['plant']);

                }

                if(isset($_GET['capacity_from']) || isset($_GET['capacity_to'])){

                        $model->capacity_from = $_GET['capacity_from'];
                        $model->capacity_to = $_GET['capacity_to'];

                }

                if(isset($_GET['pressure_from']) || isset($_GET['pressure_to'])){

                        $model->pressure_from = $_GET['pressure_from'];
                        $model->pressure_to = $_GET['pressure_to'];

                }

                if(isset($_GET['voltage']) && is_array($_GET['voltage'])){

                        $model->voltage = implode(', ', $_GET['voltage']);

                }

                /*Баки*/

                if(isset($_GET['plant_bak']) && is_array($_GET['plant_bak'])){

                        $model->plant_bak = implode(', ', $_GET['plant_bak']);

                }

                 if(isset($_GET['volume_from']) || isset($_GET['volume_to'])){

                        $model->volume_from = $_GET['volume_from'];
                        $model->volume_to = $_GET['volume_to'];

                }

                /*Насосные станции*/

                if(isset($_GET['deep_from']) || isset($_GET['deep_to'])){

                        $model->deep_from = $_GET['deep_from'];
                        $model->deep_to = $_GET['deep_to'];

                }

                /*Автоматика*/

                if(isset($_GET['tok_from']) || isset($_GET['tok_to'])){

                        $model->tok_from = $_GET['tok_from'];
                        $model->tok_to = $_GET['tok_to'];

                }

                if(isset($_GET['type']) && is_array($_GET['type'])){

                        $model->type = implode(', ', $_GET['type']);

                }

                /*Комплектующие*/

                if(isset($_GET['type_details']) && is_array($_GET['type_details'])){

                        $model->type_details = implode(', ', $_GET['type_details']);

                }

                /*Фильтры для воды*/

                if(isset($_GET['type_filter']) && is_array($_GET['type_filter'])){

                        $model->type_filter = implode(', ', $_GET['type_filter']);

                }

                /*Водоподготовка*/

                if(isset($_GET['type_water']) && is_array($_GET['type_water'])){

                        $model->type_water = implode(', ', $_GET['type_water']);

                }

                if(isset($_GET['water']) && is_array($_GET['water'])){

                        $model->water = implode(', ', $_GET['water']);

                }

                $this->filter = $this->renderPartial('application.views.shopCategory.filter_'.$_GET['alias'],array(
                'model'=>$model),true);

                $this->render('index', array(
                    'model' => $model,
                ));
        }


Model

protected function beforeFind() {

        parent::beforeFind();

        if(isset($this->price_from) || isset($this->price_to)){
            $criteria = new CDbCriteria;
            $criteria->group = "cms_files.id_obj";
            $criteria->join = 'LEFT JOIN `shop_prices` shpr ON t.`id_price` = shpr.`id`';
            $criteria->condition = "1=1 ".($this->price_from?' AND shpr.price*'.(Yii::app()->controller->currency['value']).'>='.$this->price_from:'').($this->price_to?' AND shpr.price*'.(Yii::app()->controller->currency['value']).'<='.$this->price_to:'');
            $this->getDbCriteria()->mergeWith($criteria);

        }
        ...

public function search()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('prior',$this->prior);
		$criteria->compare('name_ru',$this->name_ru,true);
		$criteria->compare('alias',$this->alias,true);
		$criteria->compare('description',$this->description_ru,true);
		$criteria->compare('long_description',$this->long_description_ru,true);
		$criteria->compare('id_price',$this->id_price);

		$criteria->compare('prod_view',$this->prod_view);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
                    'pagination'=>array(
        'pageSize'=>12,
    ),
		));
	}
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы