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