2017-05-10 35 views
0

私はlaravel vueとalgoliaで作業しています。ページングを除くすべて正常に動作します。ページネーションは機能していますが、ページの結果だけが表示されます。私が2,3ページをクリックするとページングボタンのリンクが次のページの結果をフェッチしません。どのような私が行っていることは以下に示す:Algoliaインスタント検索ページングは​​2ページ目の結果を表示しません

SearchController.php

public function search(Request $request) 
{ 
    $error = ['error' => 'No results found, please try with different keywords.']; 

    if($request->has('q')) { 
     $movies = Movie::search($request->get('q'))->get(); 
     return $movies ? $movies : $error; 
    } 

    return $error; 
} 

Pagination.js

var search = instantsearch({ 
    appId: 'myid', 
    apiKey: 'mykey', 
    indexName: 'myindex', 
    urlSync: true 
}); 

search.addWidget(
    instantsearch.widgets.pagination({ 
     container: '#pagination-container', 
     maxPages: 20, 
     scrollTo: false 
    }) 
); 

search.start(); 
+0

は、それはあなたが問題を再現ページをリンクすることは可能ですか? – bobylito

答えて

4

私はあなたが正しいページを送信するためのpaginateメソッドを使用する必要があると思いますフロントエンドに。

public function search(Request $request) 
{ 
    $error = ['error' => 'No results found, please try with different keywords.']; 

    if($request->has('q')) { 
     $movies = Movie::search($request->get('q'))->paginate(20)->all(); 
     return $movies ? $movies : $error; 
    } 

    return $error; 
} 

あなたがする必要がある場合は、明示的にページ番号を渡すことができます。

Movie::search($request->get('q'))->paginate(20, 'p', 3)->all(); 
+0

私は、非同期データ伝送にvue jsを使用しており、インスタント検索ページングも行っています。 Laravel paginateを使用していません。このページ設定を達成するのを手伝ってください。ページングボタンをクリックすると、URLは次のようになります:http://127.0.0.1:8000/?q=&idx=movies&p=2&is_v=1それは次のページのために何かをもたらすことはありません。 – WahidSherief

+0

バックエンドで検索し、すべての結果をフロントエンドに渡し、javascriptで正しいページを表示または非表示にしますか? Instantsearchはクライアント側から直接algoliaに問い合わせるように設計されており、各ページでalgolia serverへの新しいリクエストを作成し、必要なページだけを取得します。 –

関連する問題