Laravel Paginierung funktioniert nicht mit Arrays statt Sammlung
Ich versuche, den Umbruch einer array-Daten eingestellt und es hat sich schwieriger als ich dachte.
Bin ich mit Laravel 5
So, ich habe eine abstrakte Schnittstelle/repository, das alle meine anderen Modelle erweitern und habe ich eine Methode in meiner abstrakten repository nennen paginieren.
Ich habe beide
use Illuminate\Pagination\Paginator;
und
use Illuminate\Pagination\LengthAwarePaginator;
Hier ist die Methode
public function paginate($items,$perPage,$pageStart=1)
{
//Start displaying items from this number;
$offSet = ($pageStart * $perPage) - $perPage;
//Get only the items you need using array_slice
$itemsForCurrentPage = array_slice($items, $offSet, $perPage, true);
return new LengthAwarePaginator($itemsForCurrentPage, count($items), $perPage,Paginator::resolveCurrentPage(), array('path' => Paginator::resolveCurrentPath()));
}
So, wie Sie sich vorstellen können, diese Funktion akzeptiert ein array von $items
eine $perPage
variable, die angibt, wie viele Elemente umbrechen und eine $pageStart
, der angibt, von welcher Seite aus zu starten.
Die Paginierung funktioniert und ich sehen kann LengthAwarePaginator
Instanz, wenn ich dabei bin eine dd()
alle seine Werte scheinen in Ordnung.
Das problem beginnt, wenn ich mir die Ergebnisse anzeigen zu lassen.
Wenn ich {!! $instances->render() !!}
Den paginator links display ist in Ordnung, das page
Parameteränderungen nach links, aber die Daten nicht ändern.
Daten ist der gleiche auf jeder Seite. Wenn ich mit Beredtes Beispiel für Model::paginate(3)
funktioniert alles einwandfrei, aber wenn ich dd()
diese LengthAwarePaginator
es ist identisch mit der LengthAwarePaginator
Instanz des benutzerdefinierten paginator mit der Ausnahme, dass es paginiert ein array natürlich, und nicht eine Sammlung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie werden nicht übergeben, wird die aktuelle Seite, wie Sie sollten, so erhalten Sie auch gleiche array. Dies funktioniert
Ihre Funktion funktioniert auch, wenn Sie übergeben korrekten Wert für
$pageStart
-Request::get('page', 1)