Suche…
Paginierung in Laravel
In anderen Rahmen ist die Paginierung Kopfschmerzen. Laravel macht es einfach, es kann Paginierung erzeugen, indem einige Codezeilen in Controller und View eingefügt werden.
Grundlegende Verwendung
Es gibt viele Möglichkeiten, Elemente zu paginieren, aber die einfachste ist die Verwendung der paginate-Methode für den Query Builder oder eine Eloquent-Abfrage . Laravel im Auslieferungszustand sorgt für die Einstellung von Grenzwert und Versatz basierend auf der aktuellen Seite, die vom Benutzer angezeigt wird. Standardmäßig wird die aktuelle Seite vom Wert des Arguments für die Abfragezeichenfolge der HTTP-Anforderung erkannt. Dieser Wert wird von Laravel selbstverständlich automatisch erkannt und in von Paginator generierte Links eingefügt.
Nehmen wir an, wir wollen die paginate
Methode bei einer Abfrage aufrufen. In unserem Beispiel ist das übergebene Argument für die Paginierung die Anzahl der Elemente, die Sie "pro Seite" anzeigen möchten. In unserem Fall wollen wir 10 Elemente pro Seite anzeigen.
<?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]);
}
}
Hinweis: Derzeit können Paginierungsoperationen, die eine
groupBy
Anweisung verwenden, von Laravel nicht effizient ausgeführt werden. Wenn Sie einegroupBy
mit einer paginierten Ergebnismenge verwenden müssen, wird empfohlen, dass Sie die Datenbank abfragen und einen Paginator manuell erstellen.
Einfache Paginierung
Angenommen, Sie möchten nur die Links Weiter und Zurück in Ihrer Paginierungsansicht anzeigen. Laravel bietet Ihnen diese Option mithilfe der simplePaginate
Methode.
$users = DB::table('users')->simplePaginate(10);
Ergebnisse in einer Ansicht anzeigen
Jetzt können Sie die Paginierung in der Ansicht anzeigen. Eigentlich , wenn Sie den Anruf paginate
oder simplePaginate
Methoden auf Eloquent Abfrage erhalten Sie eine paginator Instanz. Wenn die Paginate-Methode aufgerufen wird, erhalten Sie eine Instanz von Illuminate\Pagination\LengthAwarePaginator
. Wenn Sie die simplePaginate
Methode simplePaginate
, erhalten Sie eine Instanz von Illuminate\Pagination\Paginator
. Diese Instanzen / Objekte werden mit mehreren Methoden geliefert, die die Ergebnismenge erklären. Zusätzlich zu diesen Hilfsmethoden sind die Paginator-Instanzen Iteratoren und können als Array geschleift werden.
Sobald Sie die Ergebnisse erhalten haben, können Sie die Seitenlinks mit Hilfe von Blade leicht rendern
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{{ $users->links() }}
Die links
zeigt die Verknüpfungen zu anderen Seiten in der Ergebnismenge automatisch an. Jeder dieser Links enthält die spezifische Seitennummer, dh die Zeichenfolgenvariable ?page
. Der durch die links-Methode generierte HTML-Code ist perfekt mit dem Bootstrap-CSS-Framework kompatibel .
Ändern der Seitenumbrüche
Während der Verwendung der Laravel-Paginierung können Sie Ihre eigenen benutzerdefinierten Ansichten verwenden. Wenn Sie die links-Methode in einer Paginator-Instanz aufrufen, übergeben Sie den Ansichtsnamen als erstes Argument an die Methode:
{{ $paginator->links('view.name') }}
oder
Sie können die Paginierungsansichten anpassen, indem Sie sie mit dem Befehl vendor: publish in das Verzeichnis resources/views/vendor
exportieren:
php artisan vendor:publish --tag=laravel-pagination
Mit diesem Befehl werden die Ansichten im Verzeichnis resources/views/vendor/pagination
. Die Datei default.blade.php
in diesem Verzeichnis entspricht der Standard-Seitenumbruchansicht. Bearbeiten Sie diese Datei, um den HTML-Code für die Paginierung zu ändern.