2015-10-25 73 views
0

我有一個搜索表單。我想分頁結果。yii dataprovider後分頁

$criteria是這樣的:

 if($_POST["tipus"] != 4){ 
      $criteria->compare('t.tipus',$_POST["tipus"],true); 
     } 
     if($_POST["varos"] != 0){ 
      $criteria->compare('`apartman`.`city`', $_POST["varos"], true); 
     } 
     if($_POST["ferohely"] != 0){ 
      $criteria->compare('t.ferohely', $_POST["ferohely"], true); 
     } 

我的數據提供程序:

 $dataProvider= new CActiveDataProvider('UserAndApartman', array(
        'criteria'=>$criteria, 
        'sort'=>array(
         'defaultOrder'=>'t.id DESC', 

        ), 
        'pagination'=>array(
            'pageSize'=>2, 
          ), 
        ));} 

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider, 
    'itemView'=>'kereses_eredmenyek_view', 
)); 

所以,如果我在第二頁上單擊,後不會再來了。我怎樣才能將它自動發佈?我可以通過分頁獲得$dataprovider嗎?

+0

與您的代碼分頁工作正常。不太確定你要求什麼? – xReprisal

+0

你必須使用form方法get not post,並從$ _GET數組中獲取params –

回答

1

您使用$ _ POST中,$ _ POST時 你導航到下一個頁面,因爲你不發佈到 第2頁,3「酒店類型」]和其他數據的丟失,等等。你可以做兩件事:

在會話中存儲$ _POST ['tipus'],所以下一頁'知道'它要使用哪一年。 將它作爲$ _GET參數存儲在網址中,因此而不是$ _POST ['tipus']使用$ _GET ['tipus']。當您導航到第2頁時,$ _GET ['tipus']在下一頁的url中可用。 最後一個是我認爲的最簡單的一個,這就是我通常使用它的方式。 如果使用GET方法,該CActiveForm行改成這樣:

<?php $this->beginWidget('CActiveForm', array(
      'id'=>'fromid', 
      'method' => 'get' 
    )); ?>