Php Yii框架:局部视图中的分页

Php Yii框架:局部视图中的分页,php,ajax,yii,pagination,Php,Ajax,Yii,Pagination,在Yii框架下工作,我有一个页面可以加载和列出不同的部分。当然,这是通过renderPartial几个不同的视图来完成的。其中一个部分获取一个数组并显示其中的项目列表。我需要做的是只对这个部分进行分页,最好使用AJAX,这样我就不会在选择页面时重新加载所有内容 这是问题的第一部分。我已经研究过如何将cactivedaptaprovider与CListView一起使用,但是,问题是我显示的是来自与数据库无关的数组的信息。换句话说,没有条件等等来创建数组,我只有一堆$items,就是这样。任何提示谢

在Yii框架下工作,我有一个页面可以加载和列出不同的部分。当然,这是通过
renderPartial
几个不同的视图来完成的。其中一个部分获取一个数组并显示其中的项目列表。我需要做的是只对这个部分进行分页,最好使用AJAX,这样我就不会在选择页面时重新加载所有内容


这是问题的第一部分。我已经研究过如何将
cactivedaptaprovider
CListView
一起使用,但是,问题是我显示的是来自与数据库无关的数组的信息。换句话说,没有条件等等来创建数组,我只有一堆
$items
,就是这样。任何提示谢谢

您可以在不使用CGridView的情况下使用CLinkPager,例如:

在控制器中:

$criteria = new CDbCriteria;
$criteria -> order = 'date';
$pages = new CPagination(Posts::model() -> count());
$pages -> pageSize = 50;
$pages -> applyLimit($criteria);
$posts= Posts::model() -> findAll($criteria);
$this -> controller -> render('list', array('posts' => $posts, 'pages' => $pages));
鉴于:

<?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>
<ul>
<?php foreach($posts as $x => $post): ?>
  <li><?php echo $post -> title ?></li>
<?php endforeach; ?>
</ul>
<?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>


您可以在不使用CGridView的情况下使用CLinkPager,例如:

在控制器中:

$criteria = new CDbCriteria;
$criteria -> order = 'date';
$pages = new CPagination(Posts::model() -> count());
$pages -> pageSize = 50;
$pages -> applyLimit($criteria);
$posts= Posts::model() -> findAll($criteria);
$this -> controller -> render('list', array('posts' => $posts, 'pages' => $pages));
鉴于:

<?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>
<ul>
<?php foreach($posts as $x => $post): ?>
  <li><?php echo $post -> title ?></li>
<?php endforeach; ?>
</ul>
<?php $this->widget('CLinkPager',array('pages'=>$pages, "cssFile" => false)); ?>


您可以使用实例作为
客户端视图的
数据提供程序。它具有内置分页支持,尽管您可能需要显式设置分页的
currentPage

您可以使用实例作为
CListView的
数据提供程序。它具有内置分页支持,尽管您可能需要显式设置分页的
currentPage

,但这里的问题是我没有标准。我只是有一个与数据库无关的$items数组,所以applyLimit部分不能为我工作。我只是有一个与数据库无关的$items数组,因此applyLimit部分对我来说不起作用。我试图弄清楚是否可以将CArrayDataProvider与常规数组一起使用,而不是像我的情况那样与数据库相关?实际上有几件事,但我太过专注于代码了。我会把它清理干净,重新开始,然后如果我还在挣扎,我会更新这个问题。谢谢好的,我从一开始就尝试使用一个简单的$items数组:$dataProvider=newcactivedaptaprovider($items,array('pagination'=>array('PageSize'=>10,));然后简单列表显示:$this->widget('CLinkPager',array('pages'=>$dataProvider,“cssFile”=>false)),然后我得到以下错误:CActiveDataProvider及其行为没有名为“getPageCount”的方法或闭包。错误,以下是使用CListView而不是CLinkPage的视图中的正确代码:$this->widget('zii.widgets.CListView',数组('dataProvider'=>$dataProvider','itemView'=>'view','template'=>“{items}\n{pager}”);它应该是
$dataProvider=new CArrayDataProvider吗(…
?另外,请将您的代码添加到您的问题中,而不是放在注释中。这样更易于格式化。我正在尝试找出是否可以使用带有常规数组的CArrayDataProvider,而不是像我的情况那样与数据库相关的内容?实际上有几件事,但我在代码中做得太多了。我会清理它然后重新开始,如果我还在挣扎,我会更新这个问题。谢谢!好吧,我从一个干净的开始尝试,使用一个简单的$items数组:$dataProvider=new cactivedaptaprovider($items,array('pagination'=>array('PageSize'=>10,);然后使用简单的列表显示它:$this->widget('CLinkPager',array('pages'=>$dataProvider,“cssFile”=>false)),然后我得到以下错误:CActiveDataProvider及其行为没有名为“getPageCount”的方法或闭包。错误,以下是使用CListView而不是CLinkPage的视图中的正确代码:$this->widget('zii.widgets.CListView',array('dataProvider'=>$dataProvider','itemView'=>'view','template'=>“{items}\n{pager}”);如果是
$dataProvider=new CArrayDataProvider(…
),也请将代码添加到问题中,而不是放在注释中。这样更容易格式化。