2012-11-23 5 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을 사용합니까 시도? 검색 구현을 보여줄 수 있습니까? 더 좋은 방법이있을 것입니다. 또한 검색은 DISPLAY에 사용되며 데이터베이스의 데이터를 변경하지 않으므로 POST 대신 GET을 사용합니다. 적절하고보다 사용자 친화적 인 방법으로 사용자가 검색 URL을 보내어 동일한 결과를 표시 할 수 있습니다 녹이다. – ddinchev

+0

배열 변수 $ 결과 내 컨트롤러에서 검색 데이터를 이미 가져 왔기 때문에 CArrayDataProvider를 사용했습니다. $ 결과가 페이지 매김을 통해 표시 될 필요가 있고 데이터베이스에서 데이터를 변경한다고 말했습니까 ?? 내가 여러 변수를 가지고 10을 말하거나 11이라고 말하면, GET을 사용하라는 뜻입니까? 그래, 그 사용자 친화적 인 방법이지만 그게 내가 우려하는 건 아니야 .. 문제는 페이지 매김에 의해 두 번째 호출에서 데이터를 사용할 수 있도록하는 방법입니까 ?? –

+0

나는 당신이 데이터를 변경한다고 말한 적이 없다. 바로 이것이 GET을 사용해야하는 이유이다. 30 개의 변수가 있더라도 seach에 대해서는 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 
)); 
관련 문제