2013-10-23 71 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

視圖看起來不錯。 –