Laravel 5, как использовать нумерацию страниц со списком файлов?

У меня есть одна проблема с моим сценарием. Я сделал 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 (), но эта опция не работает 🙁

1

Решение

Что вы можете сделать, это:

$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

2

Другие решения

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() !!}
1

По вопросам рекламы [email protected]