0

こんにちは、API からデータを取得する検索モジュールを作成しています。現在、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を呼び出して、すべての詳細を1回取得するか、1つずつ取得しますか? 期待される結果は約 200 になります。

4

2 に答える 2

1

Yelp は、その検索結果をいかなる意味でも「キャッシュ」することを許可していませんhttp://www.yelp.com/developers/getting_started/api_terms (セクション 6)。したがって、ページネーション リンクがクリックされるたびに呼び出す必要があると思います。

この目的のために、拡張された YelpDataProvider をいくつか作成しCDataProvider、必要な抽象メソッドをオーバーライドします。

ページネーション:

どのような問題に直面したかはわかりませんが、独自のデータ プロバイダーを実装するCPaginationと、クラス インスタンスとそのプロパティpageSizeにアクセスできるようになりoffsetます。 yelp リクエスト パラメータ、プロパティpageSizeにマッピングされます - リクエスト パラメータに直接マッピングされます。limitoffsetoffset

これが役立つことを願っています。

于 2013-04-09T08:31:26.510 に答える