Laravel 5无限滚动+ Paginate

时间:2016-06-22 06:34:54

标签: laravel laravel-5 pagination infinite-scroll

对于在l5中使用paginate进行无限滚动我发现了很多文章,但他们都使用这个paginate()函数,因为他们使用db的结果集,但是我从googlefontapi获取数据作为json所以当我使用json中的paginate()会导致错误,也会出现在数组中。我的代码

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 个答案:

答案 0 :(得分: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请求都会产生与之相关的延迟。

希望这有帮助。