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 eine groupBy 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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow