0

您好,我正在创建一个从 api 获取数据的搜索模块。现在我在 1 个 api 调用中获得所有结果,并将其作为数据提供者。这是代码..

$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左右..

4

2 回答 2

1

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

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

分页:

不确定我遇到了什么样的问题,但是如果您实现自己的数据提供者,您将可以访问CPagination类实例及其属性pageSizeoffset. pageSize就是要映射到limityelp请求参数,offset属性--直接offset请求参数。

我希望这将有所帮助。

于 2013-04-09T08:31:26.510 回答
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
    ),
));
于 2013-04-08T16:09:32.163 回答