Installare innanzitutto la paginazione con Laravel (non sarebbe nescessario, ma se si vuole personalizzare occorre farlo)
$ php artisan vendor:publish --tag=laravel-pagination
Vengono installate delle nuove view sotto resources/view/vendor/pagination
Delle viste che vengono installate, ho trovato che il tradeoff più conveniente sia questa: bootstrap-4.
Modificare così a view (es. resources/views/companies/index.blade.php):
@foreach($companies as $v)
...
@endforeach
<tr>
<td colspan="9">
{{ $companies->links('vendor.pagination.bootstrap-4') }}
</td>
</tr>
Il controller deve richiamare la stessa vista; l’ho un attimo modificato per aggiungere anche un filtro di ricerca:
public function index(Request $request)
{
if (($request->has('name')) and ($request->input('name') != '')) {
$name = $request->input('name');
$param = "%$name%";
$companies = Company::where('name', 'like', $param)->orderBy('name', 'asc')->paginate(config('app.results_per_page'));
} else {
$companies = Company::select('*')->orderBy('name', 'asc')->paginate(config('app.results_per_page'));
}
return view('companies.index', compact('companies'));
}
È conveniente estrapolare la costante “numero di risultati per pagina” nel file delle constanti applicative (config/app.php):
/*
|--------------------------------------------------------------------------
| Local constants
|--------------------------------------------------------------------------
*/
'results_per_page' => 5,
];
Il risultato è il seguente

Commenti recenti