Paginazione risultati con Laravel

Spread the love

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 usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.