我需要开发无限滚动机制 - 使用ajax从DB(Active Record)获取数据。现在在我的项目中,我在我的视图中使用CPagination Class和WidgetLinkPager进行分页。 在我的控制器/模型中:
$count = $this->count($criteria);
$pages = new CPagination($count);
$pages->pageSize = $per_page;
$pages->applyLimit($criteria);
$cars = $this->findAll($criteria);
return array(
'cars' => $cars,
'pages' => $pages,
'count' => $count,
);
在我的观点中:
<? $this->widget('WidgetLinkPager', array(
'pages' => $pages,
'perpageOptions' => $perpageOptions,
'objectsCount' => intval($searchResultCount),));
?>
我的问题是:如何使用CPagination类实现无限滚动和ajax?我需要在服务器上呈现数据 - 因为它现在可以工作。我在url中有很多Params,我需要通过ajax来执行此操作。我需要通过javascript从url抓取它们并使用ajax传递。这个参数需要形成搜索标准。 我正在考虑使用CListView小部件 - 但它需要DataProvider对象。
提前致谢。 抱歉我的英文。
答案 0 :(得分:3)
有一个名为yiinfinite-scroll的扩展程序可以让您这样做!
以下是该页面的示例:
控制器:
class PostController extends Controller
{
public function actionIndex()
{
$criteria = new CDbCriteria;
$total = Post::model()->count();
$pages = new CPagination($total);
$pages->pageSize = 20;
$pages->applyLimit($criteria);
$posts = Post::model()->findAll($criteria);
$this->render('index', array(
'posts' => $posts,
'pages' => $pages,
));
}
}
观点:
$this->widget('ext.yiinfinite-scroll.YiinfiniteScroller', array(
'itemSelector' => 'div.post',
'pages' => $pages,
));