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 ungroupBy
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.