Yii 搜索表单分页不起作用

Yii 搜索表单分页不起作用,yii,pagination,Yii,Pagination,我正在对我的搜索结果进行分页,在第一个页面上它工作正常,但问题是当我点击2查看第二个页面结果时,它显示的是空页面 我认为: $this->widget('zii.widgets.CListView', array('dataProvider'=>$dataProvider, 'itemView'=>'_listing')); 在控制器中,我有: if (isset($_POST) {

我正在对我的搜索结果进行分页,在第一个页面上它工作正常,但问题是当我点击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));
}
if(isset($\u POST)
{    
(......)
$dataProvider=新的CArrayDataProvider($results,array)(
'keyField'=>'brand_id',
“分页”=>数组(
“页面大小”=>5,
)));
//echo”“;print_r($dataProvider);退出;
$this->render('listing',array('dataProvider'=>$dataProvider',post'=>$\u post));
}
$results
包含我的搜索结果,控制器有一个检查是否设置了post,因此当向listing action发送加载第二页的请求时,post数据未设置,因此它不会输入代码,也不会显示任何内容

当第二页调用完成时,如何使post数据可用于操作?

试试这个


为什么要使用CArrayDataProvider?你能展示一下搜索的实现吗?我打赌有更好的方法。搜索也用于显示,而不是更改数据库中的数据,所以使用GET而不是POST-这是一种更合适、更友好的方式-用户可以将搜索url发送给其他人,以显示他找到的相同结果。我使用CArrayDataProvider是因为我已经在我的控制器中获取了数组变量$results中的搜索数据,我只需要通过分页显示$results,我是否说过我正在更改数据库中的数据?如果我有几个变量,比如说10或11,你仍然建议使用GET?是的,这是一种用户友好的方式,但这不是我关心的是ing。问题是如何通过分页在第二次调用时提供数据??我从来没有说过您正在更改数据-这正是您应该使用GET的原因。即使您有30个变量,我建议使用seaches的GET。不管怎样,无论您使用POST还是GET,为什么不使用CActiveDataProvider?“已经有了”-您以某种方式获得了它,如果您使用CActiveDataProvider,则可以使用
->getData()获取数据
方法,如果您需要它来进行分页以外的操作。CArrayDataProvider是一个仅用于外部API数据等情况的实用程序。好吧,假设我使用的是CActiveDataprovider,现在当它分页数据时,它会在下面的链接器上设置ajax链接,假设我必须看到第2页的结果,那么当我单击它时,显然它会再次调用我的操作n为了获得进一步的数据,我已经设置了检查条件,如果数据被设置或未设置,那么您的意思是说CActiveDataProvider将跳过检查??而CArrayDataProvider无法这样做??这就是您所说的??我的主要问题很简单:如何在调用第二页加载时跳过检查..就这么简单..谢谢..)CActiveDataProvider将根据默认页面GET参数自动设置查询中的限制和偏移量。当您获得结果并将其放入CarrayDataProvider时,显然没有正确地对其进行切片。
$this->widget('zii.widgets.CListView', array(
      'dataProvider'=>$dataProvider,
      'itemView'=>'_listing',
      'ajaxUpdate'=>'#divViewPanel',
      'enablePagination'=>true
));