Ich benutze Eloquent zusammen mit der Paginierungsklasse von Laravel 4.
Problem: Wenn die URL einige GET-Parameter enthält, z. B.: http://site.com/users?gender=female&body=hot
Enthalten die erzeugten Paginierungslinks nur den page
Parameter und sonst nichts.
Klingenvorlage
{{ $users->link() }}
Es gibt eine ->append()
Funktion dafür, aber wenn wir nicht wissen, wie viele der GET-Parameter vorhanden sind, wie können wir append()
dann die anderen GET-Parameter in die paginierten Links aufnehmen, ohne dass ein ganzer Teil des if
Codes unsere Blade-Vorlage durcheinander bringt?
appends
, nicht mehrappend
. Die richtige Verkettung wäre so etwas wie$query->appends($foo)->links();
$query->appends(Input::except('page'))->links();
besser funktioniert. Andernfalls wurde die Seitenvariable beim Klicken auf eine Seite nicht aktualisiert. Laravel 4.1.24.{!! $myItems->appends(Input::except('page'))->render() !!}
Ich denke, Sie sollten diesen Code in Laravel 5 verwenden. Auch dies funktioniert nicht nur mit Parametern,
page
sondern auch mit allen anderen Parametern:Persönlich versuche ich zu vermeiden,
Facades
so viel wie möglich zu verwenden. Die Verwendung globaler Hilfsfunktionen ist weniger Code und sehr elegant.AKTUALISIEREN:
Verwenden Sie
Input
Facade nicht, da es in Laravel v6 + veraltet istquelle
except('page')
diese Lösung nicht verwenden müssen .Seien Sie sich bewusst von der
Input::all()
, werden die vorherigen Fügen?page=
Werte immer wieder in jeder Seite , die Sie öffnen!Wenn Sie beispielsweise in sind
?page=1
und die nächste Seite öffnen, wird sie geöffnet.?page=1&page=2
Die letzte Werteseite ist also die Seite, die Sie sehen! nicht die Seite, die Sie sehen möchten
Lösung: verwenden
Input::except(array('page'))
quelle
Du könntest benutzen
Beispiel in der Steuerung:
Beispiel in der Ansicht:
quelle
Nicht
append()
aberappends()
Also, die richtige Antwort lautet:quelle
LARAVEL 5
Die Ansicht muss Folgendes enthalten:
{!! $myItems->appends(Input::except('page'))->render() !!}
quelle
Verwenden Sie diese Konstruktion, um alle Eingabeparameter außer Seite beizubehalten
Warum?
1) Sie entfernen alles, was zur Anfrage hinzugefügt wurde
2) Sie benötigen $ request nicht als Eingabeparameter für die Funktion
3) Sie schließen "Seite" aus
PS) und es funktioniert für Laravel 5.1
quelle
Fügen Sie dies in Ihre Ansichtsseite ein
quelle
für wen man in Laravel 5 oder höher in Klinge:
Sie können den übergebenen Artikel mit erhalten
teste es mit
Sie müssen $ etwas Wert bekommen
quelle
Laravel 7.x hat dem Paginator eine neue Methode hinzugefügt:
Sie können es also wie folgt verwenden:
Für Laravel unter 7.x verwenden Sie:
quelle
Übergeben Sie die Seitenzahl auch zur Paginierung. Etwas wie das
quelle