Displaying Pagination Results
Beim Aufruf der Methode paginate erhalten Sie eine Instanz von Illuminate\Pagination\LengthAwarePaginator. Wenn Sie die Methode simplePaginate aufrufen, erhalten Sie eine Instanz von Illuminate\Pagination\Paginator. Diese Objekte stellen mehrere Methoden zur Verfügung, die die Ergebnismenge beschreiben. Zusätzlich zu diesen Hilfsmethoden sind die Paginator-Instanzen Iteratoren und können als Array in einer Schleife ausgeführt werden. Sobald Sie also die Ergebnisse abgerufen haben, können Sie die Ergebnisse anzeigen und die Seitenlinks mit Blade rendern:
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{{ $users->links() }}
Die links-Methode wird die Links zu den restlichen Seiten in der Ergebnismenge rendern. Jeder dieser Links wird bereits die richtige Seitenabfrage-String-Variable enthalten. Denken Sie daran, dass das durch die links-Methode generierte HTML mit dem Bootstrap CSS-Framework kompatibel ist.
Customizing The Paginator URI
Mit der withPath-Methode können Sie den vom Paginator bei der Erzeugung von Links verwendeten URI anpassen. Wenn Sie beispielsweise möchten, dass der Paginator Links wie http://example.com/custom/url?page=N generiert, sollten Sie custom/url an die withPath-Methode übergeben:
Route::get('users', function () {
$users = App\User::paginate(15);
$users->withPath('custom/url');
//
});
Appending To Pagination Links
Sie können an den Abfrage-String von Paginierungslinks mit der appends-Methode anhängen. Um z.B. sort=votes an jeden Paginierungslink anzuhängen, sollten Sie den folgenden Aufruf an appends machen:
{{ $users->appends(['sort' => 'votes'])->links() }}
Wenn Sie an die URLs des Paginators ein "Hash-Fragment" anhängen möchten, können Sie die fragment-Methode verwenden. Um beispielsweise #foo an das Ende jedes Paginierungslinks anzuhängen, rufen Sie die fragment-Methode wie folgt auf:
{{ $users->fragment('foo')->links() }}
Adjusting The Pagination Link Window
Sie können steuern, wie viele zusätzliche Links auf jeder Seite des URL-"Fensters" des Paginators angezeigt werden. Standardmäßig werden drei Links auf jeder Seite der primären Paginator-Links angezeigt. Sie können diese Anzahl jedoch mit der onEachSide-Methode steuern:
{{ $users->onEachSide(5)->links() }}
Converting Results To JSON
Die Laravel Paginator Ergebnisklassen implementieren den Illuminate\Contracts\Support\Json Interface Vertrag und stellen die toJson-Methode dar, so dass es sehr einfach ist, Ihre Paginierungsergebnisse in JSON zu konvertieren. Sie können auch eine Paginator-Instanz in JSON konvertieren, indem Sie sie von einer Route oder einer Controller-Aktion zurückgeben:
Route::get('users', function () {
return App\User::paginate();
});
Der JSON aus dem Paginator wird Meta-Informationen wie total, current_page, last_page und mehr enthalten. Die eigentlichen Ergebnisobjekte werden über den data key im JSON-Array verfügbar sein. Hier ist ein Beispiel für das JSON, das durch die Rückgabe einer Paginator-Instanz von einer Route erzeugt wird:
{
"total": 50,
"per_page": 15,
"current_page": 1,
"last_page": 4,
"first_page_url": "http://laravel.app?page=1",
"last_page_url": "http://laravel.app?page=4",
"next_page_url": "http://laravel.app?page=2",
"prev_page_url": null,
"path": "http://laravel.app",
"from": 1,
"to": 15,
"data":[
{
// Result Object
},
{
// Result Object
}
]
}