Wat is paginatie
De paginatie van Laravel is geïntegreerd met de querybuilder en Eloquent ORM en je kunt er zonder configuratie mee aan de slag. De huidige pagina wordt automatisch afgeleid uit de queryparameterpage van het HTTP-verzoek en wordt ook automatisch toegevoegd aan de gegenereerde links.
De standaard-HTML is geschikt voor Tailwind CSS; je kunt ook kiezen voor Bootstrap CSS.
Drie soorten paginatie
Basisgebruik
Paginatie met de querybuilder
Paginatie met Eloquent
simplePaginate
Als de count-query voor het totale aantal niet nodig is (alleen “vorige”- en “volgende”-links tonen), issimplePaginate() efficiënter.
cursorPaginate (cursorpaginatie)
Cursorpaginatie gebruikt een WHERE-clausule in plaats van een OFFSET-clausule en levert daardoor hoge prestaties bij grote hoeveelheden data. Het is bijzonder geschikt voor UI’s met infinite scroll.OFFSET versus cursor
Implementatie in een controller
Paginatielinks tonen in Blade
links()-methode genereert automatisch de HTML van de paginalinks. Er worden links getoond voor drie pagina’s vóór en na de huidige pagina.
Het aantal getoonde links aanpassen
MetonEachSide() wijzig je hoeveel links vóór en na de huidige pagina worden getoond.
Het aantal per pagina uit het request halen
Meerdere paginators op één pagina tonen
Als je twee paginators op hetzelfde scherm toont, botsen ze wanneer beide depage-parameter gebruiken. Wijzig de parameternaam via het derde argument.
URL’s aanpassen
De basis-URL wijzigen
Queryparameters toevoegen
Een hashfragment toevoegen
API-responses (JSON-uitvoer)
Als je een paginator rechtstreeks vanuit een route of controller teruggeeft, wordt hij automatisch naar JSON geconverteerd.Combineren met API-resources
Als je het resultaat vanpaginate() wilt wrappen in een API-resourcecollectie, geef je het door aan UserResource::collection().
UserResource::collection(), wordt de paginatie-informatie automatisch als metadata toegevoegd.
De JSON van
cursorPaginate() bevat geen paginanummers maar next_cursor en prev_cursor. API-clients gebruiken deze waarden als cursor-parameter voor het volgende verzoek.Aangepaste paginatieviews
Direct in het viewbestand opgeven
De standaardview wijzigen naar een aangepast bestand
Publiceer eerst de officiële views en pas ze daarna aan.resources/views/vendor/pagination/ worden de volgende bestanden aangemaakt.
tailwind.blade.php— standaard (voor Tailwind CSS)bootstrap-5.blade.php— voor Bootstrap 5simple-tailwind.blade.php— voor simplePaginate- …
tailwind.blade.php rechtstreeks, of maak een nieuwe view en stel die in via de AppServiceProvider.
Bootstrap CSS gebruiken
Gebruik je Bootstrap in plaats van Tailwind, dan stel je dat in viaboot() in de AppServiceProvider.
Handmatig een paginator maken
Wil je paginatie toepassen op bestaande data zoals een array, dan instantieer je de paginatorklasse rechtstreeks.Veelgebruikte instantiemethodes
Samenvatting
Een paginatiemethode kiezen
Een paginatiemethode kiezen
paginate()— wanneer je het totale aantal en paginanummerlinks nodig hebt (gangbare lijstschermen)simplePaginate()— wanneer alleen “vorige”- en “volgende”-links volstaan (snel)cursorPaginate()— bij grote hoeveelheden data, infinite scroll of frequente schrijfacties (beste prestaties)
Basispatroon voor weergave in Blade
Basispatroon voor weergave in Blade
paginate() door aan de view en voert de paginalinks uit met links().
De huidige pagina wordt automatisch gedetecteerd via de queryparameter page.Paginatie in API's
Paginatie in API's
Geef je een paginator rechtstreeks terug vanuit een route, dan wordt hij automatisch naar JSON geconverteerd.
Om te combineren met API-resources geef je
UserResource::collection($paginator) terug.
De response bevat data (de array met records) en diverse metadata.