Paginazione risultati con Laravel

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

Laravel pagination
Paginazione risultati con Laravel

Risorse web

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.