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 engroupBy
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.