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



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow