2 回答
![?](http://img1.sycdn.imooc.com/54584cd10001404b02200220-100-100.jpg)
TA贡献1828条经验 获得超6个赞
我已经通过重写常规资源类的collection 方法解决了此问题。
public static function collection($data)
{
/* is_a() makes sure that you don't just match AbstractPaginator
* instances but also match anything that extends that class.
*/
if (is_a($data, \Illuminate\Pagination\AbstractPaginator::class)) {
$data->setCollection(
$data->getCollection()->map(function ($listing) {
return new static($listing);
})
);
return $data;
}
return parent::collection($data);
}
这只是检查给定的数据是否是Laravel分页器类的实例,如果是,它只是修改基础集合并返回相同的分页器实例。您可以将其放在抽象集合类或每个资源类中。
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
TA贡献1826条经验 获得超6个赞
为了使您的代码整洁,请在不同的集合中使用PaginationResource,并在单个位置上编辑分页详细信息
然后在任何资源中添加您的分页资源,如下所示
这是分页资源
public function toArray($request) : Array
{
return [
'total' => $this->total(),
'count' => $this->count(),
'per_page' => $this->perPage(),
'current_page' => $this->currentPage(),
'total_pages' => $this->lastPage()
];
}
并将其添加到其他任何这样的集合中
public function toArray($request) : Array
{
$pagination = new PaginationResource($this);
return [
'templates' => $this->collection,
$pagination::$wrap => $pagination,
];
}
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报