你好我正在创建一个从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左右。
答案 0 :(得分:1)
Yelp不允许"缓存"其搜索结果具有任何含义http://www.yelp.com/developers/getting_started/api_terms(第6节)。所以我相信你每次点击分页链接时都需要打电话。
为此,我将创建一些从CDataProvider
扩展的YelpDataProvider并覆盖所需的抽象方法。
分页:
我不确定您遇到了哪些问题,但如果您实施自己的数据提供程序,则可以访问CPagination
类实例及其属性pageSize
和offset
。
pageSize
将limit
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
),
));