Zoeken…
Paginatie in Laravel
In andere frameworks is paginering hoofdpijn. Laravel maakt het gemakkelijk, het kan paginering genereren door enkele regels code toe te voegen in Controller en View.
Basisgebruik
Er zijn veel manieren om items te pagineren, maar de eenvoudigste is het gebruik van de paginate-methode op querybuilder of een welsprekende query . Laravel uit de doos zorgt voor het instellen van limiet en offset op basis van de huidige pagina die door de gebruiker wordt bekeken. Standaard wordt de huidige pagina gedetecteerd door de waarde van het argument? Page query string on the HTTP request. En zeker, deze waarde wordt automatisch gedetecteerd door Laravel en ingevoegd in links gegenereerd door paginator.
Laten we nu zeggen dat we de paginate
methode bij query willen aanroepen. In ons voorbeeld is het doorgegeven argument om te pagineren het aantal items dat u "per pagina" wilt weergeven. Laten we in ons geval 10 items per pagina weergeven.
<?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]);
}
}
Opmerking: momenteel kunnen pagineringsbewerkingen die een
groupBy
instructie gebruiken, niet efficiënt worden uitgevoerd door Laravel. Als u eengroupBy
met een gepagineerde resultatenset moet gebruiken, wordt u aangeraden de database te doorzoeken en handmatig een paginator te maken.
Eenvoudige paginering
Stel dat u alleen de volgende en vorige links in uw paginatieweergave wilt weergeven. Laravel biedt u deze optie met behulp van de simplePaginate
methode.
$users = DB::table('users')->simplePaginate(10);
Resultaten in een weergave weergeven
Laten we nu de paginering weergeven die wordt weergegeven. Eigenlijk wanneer u de paginate
of simplePaginate
methoden op Eloquent query simplePaginate
, ontvangt u een paginatorinstantie. Wanneer de paginate-methode wordt aangeroepen, ontvangt u een exemplaar van Illuminate\Pagination\LengthAwarePaginator
, terwijl u, wanneer u de methode simplePaginate
aanroept, een exemplaar van Illuminate\Pagination\Paginator
. Deze instanties / objecten worden geleverd met verschillende methoden die de resultatenset toelichten. Bovendien zijn de paginatorinstanties, naast deze helpermethoden, iterators en kunnen deze als een array worden doorgelust.
Nadat u de resultaten heeft ontvangen, kunt u de paginakoppelingen eenvoudig weergeven met behulp van de blade
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{{ $users->links() }}
De links
geeft de koppelingen naar andere pagina's in de resultatenset automatisch weer. Elk van deze koppelingen bevat het specifieke paginanummer, dwz ?page
query string variable. De HTML die is gegenereerd door de koppelingsmethode is perfect compatibel met het Bootstrap CSS-framework.
Paginatieweergaven wijzigen
Tijdens het gebruik van laravelpaginatie bent u vrij om uw eigen aangepaste weergaven te gebruiken. Dus, wanneer u de koppelingsmethode op een paginatorinstantie aanroept, geeft u de weergavenaam als het eerste argument aan de methode als:
{{ $paginator->links('view.name') }}
of
U kunt de paginatieweergaven aanpassen door deze naar uw map resources/views/vendor
exporteren met de opdracht vendor: publish:
php artisan vendor:publish --tag=laravel-pagination
Met deze opdracht worden de weergaven in de map resources/views/vendor/pagination
. Het bestand default.blade.php
in deze map komt overeen met de standaardweergave voor paginering. Bewerk dit bestand om de HTML-paginering te wijzigen.