2012-11-23 90 views
1

我在我的搜索結果上實施分頁,在它的第一頁工作正常,但問題是當我點擊第2頁的第二頁結果時,它顯示空白頁面。分頁與搜索表單不工作

鑑於我有:

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

,而在我的控制,我有:

if (isset($_POST) 
{  
    (......) 
    $dataProvider=new CArrayDataProvider($results,array(
                 'keyField' => 'brand_id', 
                 'pagination'=>array(
                 'pageSize'=>5, 
               ))); 

    //echo "<pre>"; print_r($dataProvider);exit; 

    $this->render('listing',array('dataProvider'=>$dataProvider, 'post' => $_POST)); 
} 

$results包含我的搜索結果中,控制器具有一個檢查,如果崗位設置與否,所以當第二頁加載請求發送到列表動作,發佈數據未設置,因此它不輸入代碼並且什麼也不顯示。

如何在第二頁調用完成後使發佈數據可用?

+2

爲什麼要使用CArrayDataProvider?你可以展示搜索實施,我敢打賭有更好的方法來做到這一點。此外,還使用搜索來顯示數據,而不是更改數據庫中的數據,因此請使用GET而不是POST - 它是一種適當且用戶友好的方式 - 用戶可以將搜索網址發送給其他人以顯示他擁有的相同結果找到。 – ddinchev

+0

我已經使用CArrayDataProvider,因爲我已經在數組變量$ results中獲取了我的控制器中的搜索數據,我只需要$結果通過分頁顯示,並且我說我正在更改數據庫中的數據? 如果我有幾個變量說10或說11,你stil建議使用GET?是啊它的用戶友好的方式,但那不是我所關心的事情.. 問題是如何使數據可用第二次調用分頁? –

+0

我從來沒有說過你正在改變數據 - 這正是你應該使用GET的原因。即使你有30個變量,我也會建議GET進行搜索。無論如何,無論您使用POST還是GET,您爲什麼不使用CActiveDataProvider? http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider「已經有了」 - 如果您使用CActiveDataProvider,您已經獲得它,如果您需要,可以使用' - > getData()'方法獲取數據它在旁邊的分頁。 CArrayDataProvider僅適用於外部API數據等情況。 – ddinchev

回答

0

試試這個

$this->widget('zii.widgets.CListView', array(
     'dataProvider'=>$dataProvider, 
     'itemView'=>'_listing', 
     'ajaxUpdate'=>'#divViewPanel', 
     'enablePagination'=>true 
));