我执行以下操作:
$array = new LengthAwarePaginator(array_slice($array, $offset, $perPage, true), count($array),$perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);
dd($array->render());
我得到了渲染方法的正确html输出。
然后我尝试:
$array = new Paginator(array_slice($array, $offset, $perPage, true), $perPage, $page, ['path' => $request->url(), 'query' => $request->query()]);
dd($array->render());
,输出为""。
当我(dd($array));
时,我得到了:
Paginator {#310 ▼
#hasMore: false
#items: Collection {#315 ▶}
#perPage: 10
#currentPage: 1
#path: "https://localhost/search/3"
#query: array:1 [▶]
#fragment: null
#pageName: "page"
}
有人知道为什么我的Paginator没有渲染方法吗?
答案 0 :(得分:0)
问题是由于Illuminate \ Pagination \ Paginator工作方式的误解。对于此对象,您不能像使用LengthAwarePaginator一样传入大小为$ perPage的数组,因为此Paginator将不知道是否存在下一页。所以,我提出的解决方案(虽然我没有找到任何提及此的文档)是将array_slice($array, $offset, $perPage * 2, true)
作为输入传递给Paginator。这样它总是知道是否还有更多,我仍然不需要知道有多少项目。