Ricerca…


Impaginazione in Laravel

In altri quadri l'impaginazione è mal di testa. Laravel rende più semplice, può generare l'impaginazione aggiungendo poche righe di codice in Controller e View.

Uso di base

Esistono molti modi per impaginare gli elementi, ma il più semplice è l'utilizzo del metodo paginate sul generatore di query o su una query di Eloquent . Laravel out of the box si occupa di impostare il limite e l'offset in base alla pagina corrente visualizzata dall'utente. Per impostazione predefinita, la pagina corrente viene rilevata dal valore dell'argomento della stringa di query della pagina sulla richiesta HTTP. E di sicuro, questo valore viene rilevato automaticamente da Laravel e inserito nei collegamenti generati da paginator.

Ora diciamo che vogliamo chiamare il metodo paginate su query. Nel nostro esempio l'argomento passato a paginare è il numero di elementi che si desidera visualizzare "per pagina". Nel nostro caso, diciamo che vogliamo visualizzare 10 elementi per pagina.

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(10);

        return view('user.index', ['users' => $users]);
    }
}

Nota: attualmente, le operazioni di impaginazione che utilizzano un'istruzione groupBy non possono essere eseguite in modo efficiente da Laravel. Se è necessario utilizzare un groupBy con un set di risultati impaginato, si consiglia di interrogare il database e creare manualmente un cercapersone.

Impaginazione semplice

Diciamo che vuoi solo visualizzare i link Avanti e Indietro sulla tua vista di impaginazione. Laravel ti offre questa opzione usando il metodo simplePaginate .

$users = DB::table('users')->simplePaginate(10);

Visualizzazione dei risultati in una vista

Ora consente di visualizzare l'impaginazione in vista. In realtà quando chiamate i metodi paginate o simplePaginate su query Eloquent, ricevete un'istanza cercapersone. Quando viene chiamato il metodo paginate, si riceve un'istanza di Illuminate\Pagination\LengthAwarePaginator , mentre quando si chiama il metodo simplePaginate , si riceve un'istanza di Illuminate\Pagination\Paginator . Queste istanze / oggetti vengono forniti con diversi metodi che spiegano il set di risultati. Inoltre, oltre a questi metodi di helpers, le istanze di impaginatore sono iteratori e possono essere collegate in loop come una matrice.

Una volta ricevuti i risultati, è possibile rendere facilmente i collegamenti della pagina utilizzando blade

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

Il metodo dei links renderizza automaticamente i collegamenti ad altre pagine nella serie di risultati. Ciascuno di questi collegamenti conterrà il numero di pagina specifico, ovvero la variabile di stringa della query della ?page . L'HTML generato dal metodo links è perfettamente compatibile con il framework CSS Bootstrap.

Modifica delle visualizzazioni di impaginazione

Durante l'utilizzo della paginazione di laravel sei libero di usare le tue visualizzazioni personalizzate. Quindi, quando chiami il metodo dei link su un'istanza di impaginatore, passa il nome della vista come primo argomento al metodo come:

{{ $paginator->links('view.name') }}

o

È possibile personalizzare le visualizzazioni di impaginazione esportandole nella directory resources/views/vendor utilizzando il fornitore: comando di pubblicazione:

php artisan vendor:publish --tag=laravel-pagination

Questo comando posiziona le viste nella directory resources/views/vendor/pagination . Il file default.blade.php all'interno di questa directory corrisponde alla vista dell'impostazione predefinita. Modifica questo file per modificare l'HTML di impaginazione.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow