Yii无限(无限)滚动使用Active Record

时间:2013-09-03 12:36:33

标签: php activerecord yii pagination infinite-scroll

我需要开发无限滚动机制 - 使用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对象。

提前致谢。 抱歉我的英文。

1 个答案:

答案 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,
));