如何在yii中编辑分页行为

时间:2013-04-08 15:55:26

标签: yii

你好我正在创建一个从apis中获取数据的搜索模块。 现在我得到所有结果1 api调用,我将它作为dataProvider。 这是代码..

$dataProvider = new CArrayDataProvider($result, array(          
                                                    'sort' => array(
                                                    'attributes' => array('name',
                                                            ),
                                                    ),
                                                    'pagination' => array(
                                                            'pageSize' => 10,
                                                    ),
                                            ));

这是正常工作并给予分页。我想要做的是使用API​​的限制和设置。 例如,考虑yelp api

    http://api.yelp.com/search?term="xxx"&location="xxx"&limit=10&ofset=0;

我想最初只获得10个结果,当我点击分页[2]或下一个>时,我需要另一个api调用来获得下一个结果。

怎么办呢?

我还需要专家意见。哪一个更好。?一次调用api并获取所有细节一次或逐个获取几个?预期结果将在200左右。

2 个答案:

答案 0 :(得分:1)

Yelp不允许"缓存"其搜索结果具有任何含义http://www.yelp.com/developers/getting_started/api_terms(第6节)。所以我相信你每次点击分页链接时都需要打电话。

为此,我将创建一些从CDataProvider扩展的YelpDataProvider并覆盖所需的抽象方法。

分页:

我不确定您遇到了哪些问题,但如果您实施自己的数据提供程序,则可以访问CPagination类实例及其属性pageSizeoffsetpageSizelimit yelp请求参数offset属性 - 直接映射到offset请求参数。

我希望这会有所帮助。

答案 1 :(得分:0)

http://www.yiiframework.com/doc/api/1.1/CPagination

$dataProvider = new CArrayDataProvider($result, array(          
    'sort' => array(
        'attributes' => array('name'),
    ),
    'pagination' => array(
        'pageSize' => 10,
        'offset' => 5
    ),
));