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