Sök…


Pagination i Laravel

I andra ramverk är pagination huvudvärk. Laravel gör det bris, det kan generera pagination genom att lägga till några kodrader i Controller och View.

Grundläggande användning

Det finns många sätt att paginera objekt, men det enklaste är att använda paginatmetoden i frågeställare eller en Eloquent-fråga . Laravel ur rutan tar hand om inställningsgräns och förskjutning baserat på den aktuella sidan som visas av användaren. Som standard upptäcks den aktuella sidan med värdet på strängargumentet för? Sidfråga på HTTP-begäran. Och säkerligen upptäcks detta värde automatiskt av Laravel och infogas i länkar som genereras av paginator.

Låt oss nu säga att vi vill kalla paginate vid frågan. I vårt exempel är det passerade argumentet för att paginera antalet objekt du vill visa "per sida". I vårt fall, låt oss säga att vi vill visa 10 objekt per sida.

<?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]);
    }
}

Obs: För närvarande kan inte paginationsoperationer som använder ett groupBy uttalande utföras effektivt av Laravel. Om du behöver använda en groupBy med en paginerad resultatuppsättning rekommenderas att du frågar databasen och skapar en paginator manuellt.

Enkel pagination

Låt oss säga att du bara vill visa nästa och föregående länkar i din sidvisningsvy. Laravel ger dig detta alternativ med hjälp av simplePaginate metoden.

$users = DB::table('users')->simplePaginate(10);

Visar resultat i en vy

Låter nu visa paginationen i vyn. Faktiskt när du kallar paginate eller simplePaginate på Eloquent-frågan får du en inställningsinstans. När paginatmetoden kallas får du en instans av Illuminate\Pagination\LengthAwarePaginator , medan när du ringer simplePaginate metoden får du en instans av Illuminate\Pagination\Paginator . Dessa instanser / objekt har flera metoder som förklarar resultatuppsättningen. Förutom dessa hjälpmedel-metoder är paginatorns instanser iteratorer och kan slingas som en matris.

När du har fått resultaten kan du enkelt göra sidlänkar med bladet

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

links ger automatiskt länkarna till andra sidor i resultatset. Var och en av dessa länkar kommer att innehålla det specifika sidnumret, dvs. ?page HTML som genereras av länkmetoden är perfekt kompatibel med Bootstrap CSS-ramverket.

Ändra sidvisningar

När du använder laravel-pagination är det fritt att använda dina egna anpassade vyer. Så när du ringer länkmetoden i en paginator-instans ska du skicka visningsnamnet som det första argumentet till metoden som:

{{ $paginator->links('view.name') }}

eller

Du kan anpassa sidvisningsvyerna genom att exportera dem till dina resources/views/vendor hjälp av kommandot leverantör: publicera:

php artisan vendor:publish --tag=laravel-pagination

Detta kommando placerar vyerna i katalogen resources/views/vendor/pagination . default.blade.php filen i den här katalogen motsvarar standardpaginationsvyn. Redigera den här filen för att ändra pagineringens HTML-kod.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow