2016-06-22 93 views
3

爲做無限滾動與分頁在l5我發現了很多文章,但他們都使用這個paginate()函數,因爲他們使用從數據庫結果集,但我從googlefontapi獲取數據作爲json所以當我在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\Support\Collection傳遞給Illuminate\Pagination\Paginator類的一個實例,以獲得我們的Illuminate\Pagination\Paginator實例。請務必use Illuminate\Pagination\Paginator

use Illuminate\Pagination\Paginator; 

然後,從結果中創建一個集合:

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

最後,構建分頁程序。

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

或者一條線,因爲這就是你滾:

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

您也可以緩存集合,如果你需要它,只有重新加載它,如果請求不是一個XHR請求,如在頁面加載。當您需要將API請求保持在最低限度時,這非常有用,並且通常還有助於加快請求的性能,因爲任何HTTP請求都會有延遲關聯。

希望這會有所幫助。

+0

沒有運氣兄弟說調用未定義的函數App \ Http \ Controllers \ collection()@ Ohgodwhy –

+0

@Ranjith對不起,我自己的錯字。這應該是「收集」而不是「收集」。 – Ohgodwhy