2016-06-22 16 views
3

15ページ目にページナンバーが付いた無限のスクロールがありますが、多くの記事が見つかりましたが、これらはすべてデータベースから結果セットを使用していますが、jsonとしてgooglefontapiからデータを取得しています。だからjsonでpaginate()を使うと、エラーが発生し、配列も発生します。私のコードLaravel 5無限スクロール+ページネック

public function index(){ 


    $url = "https://www.googleapis.com/webfonts/v1/webfonts?key=!"; 
    $result = json_decode(file_get_contents($url))->paginate(10); 
    $font_list = ""; 
    foreach ($result->items as $font) 
    { 
     $font_list[] = [ 
      'font_name' => $font->family, 
      'category' => $font->category, 
      'variants' => implode(', ', $font->variants), 
      // subsets 
      // version 
      // files 
     ]; 
    } 

    return view('website_settings')->with('data', $font_list); 

} 

とエラーが

Call to undefined method stdClass::paginate() 

では、あなたのケースのためにそれを

答えて

1

を達成するための他の方法があり、あなたはIllluminate\Support\Collectionを使用する必要があります。次に、Illuminate\Pagination\Paginatorインスタンスを返すためにIlluminate\Pagination\PaginatorクラスのインスタンスにIlluminate\Support\Collectionを渡すことができます。必ずuse Illuminate\Pagination\Paginatorにしてください。最後に、

$collection = collect(json_decode($file_get_contents($url), true)); 

をページネータを構築:

use Illuminate\Pagination\Paginator; 

次に、検索結果からコレクションを作成します。

$paginator = new Paginator($collection, $per_page, $current_page); 

または1行それそれはあなたが転がる方法ですので:

$paginator = new Paginator(collect(json_decode($file_get_contents($url), true))); 

あなたがそれを必要とする場合にも、コレクションをキャッシュすることができますし、唯一の要求は中などに、XHRリクエストでない場合は、それをリロードページの読み込み。これは、APIの要求を最小限に保つ必要がある場合に便利です。また、リクエストのパフォーマンスが向上するのに役立ちます.HTTPリクエストにはそれに関連する遅延があります。

うまくいけば、これが役に立ちます。

+0

未定義の関数への呼び出しApp \ Http \ Controllers \ collection()@ Ohgodwhy –

+0

@Ranjith申し訳ありませんが、私自身の誤植。それはコレクションではなく、コレクションでなければなりません。 – Ohgodwhy