为了在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()


还有其他方法可以实现它吗

最佳答案

对于您的情况,您需要使用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请求都将具有与之相关的延迟。

希望这会有所帮助。

10-07 18:52