laravel 5 分页 json 数据集
laravel 5 paginating json data set
控制器代码:http://laravel.io/bin/1yYrw
查看代码:http://laravel.io/bin/kWlaX
我目前正在从一个 guzzle api 请求中提取一组数据。我的第 28 行变量 $transactions returns 这个数据集:
[
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T10:23:44.000Z"
},
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T10:21:43.000Z"
},
{
"game":"MagicBoxAsia",
"package":"MOL Points Inter Wallet 500 MB Coins",
"date":"2015-04-21T10:19:31.000Z"
},
{
"game":"MagicBoxAsia",
"package":"MOL Points Inter Wallet 500 MB Coins",
"date":"2015-04-21T10:18:10.000Z"
},
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T07:51:35.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 500",
"date":"2015-04-21T07:41:13.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 1000",
"date":"2015-04-21T07:38:08.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 50",
"date":"2015-04-21T07:35:50.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 150",
"date":"2015-04-21T07:23:24.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Boonterm 150",
"date":"2015-04-21T07:06:38.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 50",
"date":"2015-04-21T06:43:54.000Z"
}
]
但是,当使用 foreach 循环在视图中分页和显示时,将显示所有 11 个项目而不是分页。当我将每页值从 6 更改为 2 时,$->render()
滑块似乎明白生成了更多页面,但所有项目仍显示在同一页面上。
您在分页 class 上调用 foreach,它在所有项目上实现 ArrayIterator [1]。我认为您可能要做的是在集合本身上使用 forPage [2] 方法(Paginator 上不存在的任何方法都会传递给集合 [3]),传入页码和每页数你要。
@foreach ($paginator->forPage($paginator->currentPage(), $paginator->perPage())
...
@endforeach
[1] https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L374
[2] https://github.com/illuminate/support/blob/master/Collection.php#L413
[3] https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L461
这样做
$collection = new Collection($response['data']), true));
$currentPage = Paginator::resolveCurrentPage();
$per_page = 6;
$currentPageResults = $collection->slice(($currentPage - 1) * $per_page, $per_page)->all();
$paginator = new Paginator($currentPageResults, count($collection), $per_page);
$paginator->setPath($request->url());
控制器代码:http://laravel.io/bin/1yYrw
查看代码:http://laravel.io/bin/kWlaX
我目前正在从一个 guzzle api 请求中提取一组数据。我的第 28 行变量 $transactions returns 这个数据集:
[
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T10:23:44.000Z"
},
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T10:21:43.000Z"
},
{
"game":"MagicBoxAsia",
"package":"MOL Points Inter Wallet 500 MB Coins",
"date":"2015-04-21T10:19:31.000Z"
},
{
"game":"MagicBoxAsia",
"package":"MOL Points Inter Wallet 500 MB Coins",
"date":"2015-04-21T10:18:10.000Z"
},
{
"game":"Fantasista",
"package":"Fantasista 10 Dollca",
"date":"2015-04-21T07:51:35.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 500",
"date":"2015-04-21T07:41:13.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 1000",
"date":"2015-04-21T07:38:08.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 50",
"date":"2015-04-21T07:35:50.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 150",
"date":"2015-04-21T07:23:24.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Boonterm 150",
"date":"2015-04-21T07:06:38.000Z"
},
{
"game":"MagicBoxAsia",
"package":"Thai ePay 50",
"date":"2015-04-21T06:43:54.000Z"
}
]
但是,当使用 foreach 循环在视图中分页和显示时,将显示所有 11 个项目而不是分页。当我将每页值从 6 更改为 2 时,$->render()
滑块似乎明白生成了更多页面,但所有项目仍显示在同一页面上。
您在分页 class 上调用 foreach,它在所有项目上实现 ArrayIterator [1]。我认为您可能要做的是在集合本身上使用 forPage [2] 方法(Paginator 上不存在的任何方法都会传递给集合 [3]),传入页码和每页数你要。
@foreach ($paginator->forPage($paginator->currentPage(), $paginator->perPage())
...
@endforeach
[1] https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L374
[2] https://github.com/illuminate/support/blob/master/Collection.php#L413
[3] https://github.com/illuminate/pagination/blob/master/AbstractPaginator.php#L461
这样做
$collection = new Collection($response['data']), true));
$currentPage = Paginator::resolveCurrentPage();
$per_page = 6;
$currentPageResults = $collection->slice(($currentPage - 1) * $per_page, $per_page)->all();
$paginator = new Paginator($currentPageResults, count($collection), $per_page);
$paginator->setPath($request->url());