php - Laravel:分页json响应
问题描述
我从 Google Fonts 获取 json 数据并将其显示在我的网站上。我尝试使用 laravel 分页器对这些数据进行分页,因为当我将其作为一个整体显示时,它会影响性能,但我还没有找到如何做到这一点。
这是我的控制器
public function googleFonts()
{
$url = "https://www.googleapis.com/webfonts/v1/webfonts?key={ my key here}";
$r = collect(json_decode(file_get_contents( $url ),true));
return view ('googleFonts',compact('result'))->render();
}
这是我的刀片文件
@foreach($result->items as $font)
<tr>
<td>{{$font->family }}</td>
<td <p style="font-family: '{{$font->family}}',serif;font-size: 22px">Lorem ipsum</p></td>
<td>{{implode(', ', $font->variants) }}</td>
<td>{{$font->category }}</td>
<td>{{implode(', ', $font->subsets) }}</td>
<td>{{$font->version }}</td>
</tr>
@endforeach
当我在没有分页的情况下返回数据时,一切正常,但是当我尝试分页时,无论我尝试什么,一切都会中断。任何想法都会受到极大的欢迎
解决方案
您可以通过实例化此类,使用集合或本机数组手动对数据进行分页Illuminate\Pagination\LengthAwarePaginator
。
// Set default page
$page = request()->has('page') ? request('page') : 1;
// Set default per page
$perPage = request()->has('per_page') ? request('per_page') : 15;
// Offset required to take the results
$offset = ($page * $perPage) - $perPage;
// At here you might transform your data into collection
$url = "https://www.googleapis.com/webfonts/v1/webfonts?key={ my key here}";
$newCollection = collect(json_decode(file_get_contents( $url ),true));
// Set custom pagination to result set
$results = new LengthAwarePaginator(
$newCollection->slice($offset, $perPage),
$newCollection->count(),
$perPage,
$page,
['path' => request()->url(), 'query' => request()->query()]
);
return view('googleFonts',compact('results'));
推荐阅读
- google-cloud-platform - 当 IAM 建议显示未使用服务帐户的角色时,为什么我会收到身份验证事件?
- android - Flutter 年度本地通知
- wordpress - ACF 从产品术语中获取图像
- python - 带卡片的 HTML div 响应式设计
- javascript - 在 io 对象中找不到/可访问房间
- javascript - Jquery数据表数据排序不适用于日期
- angular-routing - 斜线中的斜线
- javascript - 如何删除作为列表一部分的动态呈现的组件?
- python - 当我在 windows10 中双击 exe 文件时,出现“无法执行脚本主程序”
- resources - 如果所有浮动 IP 资源都不可用,有没有办法让起搏器资源组故障转移?