Laravel 5 如何在文件列表中使用分页?
Posted
技术标签:
【中文标题】Laravel 5 如何在文件列表中使用分页?【英文标题】:Laravel 5 how to use pagination with files list? 【发布时间】:2016-04-07 11:33:54 【问题描述】:我的脚本有一个问题。我用文件列表做了foreach,但我需要分页,例如每个站点15个文件。我现在该怎么办?感谢您的帮助:)
控制器:
$files = Storage::allFiles('/upload_file');
return view('cms.viewSystem.gallery.manageFiles')->with('files', $files);
刀片视图:
<table class="table table-bordered table-striped datatable" id="table-2">
<thead>
<tr>
<th>Nazwa pliku</th>
<th>Akcje</th>
</tr>
</thead>
<tbody>
@foreach($files as $file)
<tr>
<td> $file </td>
<td>
<a href=" url('cms/media/deleteFile/'.$file) " class="btn btn-red btn-sm btn-icon icon-left"><i class="entypo-cancel"></i>Usuń</a>
</td>
</tr>
@endforeach
</tbody>
</table>
我尝试使用 paginate() 但此选项不起作用:(
【问题讨论】:
您可以创建自己的Paginator
实例并将分页所需的参数传递给它(在Laravel Documentation 中提到,但那里没有示例。例如,您可以查看this answer.
你可以使用 Paginator - 看看这个问题 - ***.com/questions/27213453/…
【参考方案1】:
Storage::allFiles()
函数只返回一个数组,因此您可以在 laravel 分页类中使用构建。请参阅分页文档https://laravel.com/docs/5.2/pagination
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($items, $total, $perPage);
return view('my.view', ['files' => $paginator]);
在您看来,然后您可以正常循环遍历结果,但也可以访问 render()
函数来显示分页链接。
@foreach($files as $file)
$file
@endforeach
!! $files->render() !!
【讨论】:
【参考方案2】:你可以做的是:
$page = (int) $request->input('page') ?: 1;
$files = collect(Storage::allFiles('/upload_file'));
$onPage = 15;
$slice = $files->slice(($page-1)* $onPage, $onPage);
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($slice, $files->count(), $onPage);
return view('cms.viewSystem.gallery.manageFiles')->with('files', $paginator);
为了在视图中显示,您可以使用https://laravel.com/docs/5.1/pagination#displaying-results-in-a-view
【讨论】:
好的,谢谢,但我有一个问题。当我按照你说的那样使用分页功能时,我看到导航页面,但我的 foreach 在一页上显示所有文件,你知道吗? @StanisławSzewczyk 我已经更新了代码 - 你需要在这里自己创建切片。以上是关于Laravel 5 如何在文件列表中使用分页?的主要内容,如果未能解决你的问题,请参考以下文章