2013-10-23 37 views
0

这个搜索问题Cpagination动作,当我做搜索有3个结果,例如它给了我3页,每页有相同的3个三种结果,那么,什么是错在这里:Cpagination和警予

$criteria = new CDbCriteria(); 
      $models = Files::model(); 
      if (isset($_GET['file'])) { 
       $q = $_GET['file']; 
       $criteria->compare('fileName', $q, true, 'OR'); 
       $criteria->compare('tags', $q, true, 'OR'); 
       $count=Files::model()->count($criteria); 
       $pages=new CPagination($count); 

       // results per page 
       $pages->pageSize=1; 
       // $pages->applyLimit($criteria); 

      } 

      $dataProvider = new CActiveDataProvider("Files", array('criteria' => $criteria)); 
      $this->render('result', array(
       'dataProvider'=>$dataProvider, 
       'pages'=>$pages, 
        )); 

本所认为:

<?php 


$this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider, 
    'itemView' => '_view', 
)); 
$this->widget('CLinkPager', array(
    'pages' => $pages, 
)) ?> 

回答

1

您使用您的代码里面网状的东西。此外,您的$pages->pageSize只会在isset($_GET['file'])时运行。 if声明必须仅用于添加条件参数。

你必须决定你将只使用两种Files::model()CActiveDataProvider("Files")。如果要使用CActiveDataProvider

$criteria = new CDbCriteria(); 

if (isset($_GET['file'])) { 
    $criteria->compare('fileName', $_GET['file'], true, 'OR'); 
    $criteria->compare('tags', $_GET['file'], true, 'OR'); 
} 

$dataProvider = new CActiveDataProvider("Files", array(
    'criteria' => $criteria, 
    'countCriteria' => $criteria, 
    'pagination'=>array(
     // results per page 
     'pageSize'=>1, 
    ), 
)); 

$this->render('result', array(
    'dataProvider' => $dataProvider, 
    'pages' => $dataProvider->pagination, 
)); 

而且,我看不到你的view。也许你也有一些错误的分页代码。

+0

countCriteria没有定义,我想使用的文件::模型(),我会编辑的问题,并显示U中的视图 – Mohammad

+0

哎呀。在Yii 1.1.14中引入了'CActiveDataProvider'的'countCriteria'。你使用的是什么版本?尝试去除''countCriteria'=> $ criteria,'。 –

+0

视图看起来不错。 –