Laravel 10.x karkasas. Įrašų puslapiavimas
Sukurkime puslapiavimą šalių sąrašui. Tam tikslui pagal ankstesnes pamokas sukurkite šalims modelį, valdiklį, vaizdus ir maršrutą. Atsidarykite valdiklį ir metode
Atsidarykite šalių vaizdą
Atsidarykite failą
Komandinėje eilutėje įvykdykite komandą, kuri nukopijuos atitinkamus failus į vaizdų katalogą:
index()
įrašykite:public function index()
{
$countries = Country::paginate(25);
return view('admin.countries.index', compact('countries'));
}
Metodui paginate()
reikia nurodyti skaičių, kuris reikš, kiek įrašų norėsite matyti viename puslapyje.Atsidarykite šalių vaizdą
..\library\resources\views\admin\countries\index.blade.php
ir po įrašų lentele įrašykite kodą, kuris atvaizduos puslapiavimą:
<table>
...
</table>
{{ $countries->links() }}
Kadangi dizainui naudojame Bootstrap 5 karkasą ir Laravel karkasas turi jo palaikymą, nurodykime, kad ir puslapiavimui naudosime Bootstrap 5 stilius.Atsidarykite failą
..\library\app\Providers\AppServiceProvider.php
ir jo metode boot()
nurodykite:
public function boot()
{
Paginator::useBootstrapFive();
}
Puslapiavimo stilių galima keisti pagal savo poreikius. Pavyzdžiui, pridėkime papildomus du mygtukus, kurie nukreips į pradinį ir paskutinį puslapius.Komandinėje eilutėje įvykdykite komandą, kuri nukopijuos atitinkamus failus į vaizdų katalogą:
php artisan vendor:publish --tag=laravel-pagination
Tada atsidarykite failą ..\library\resources\views\vendor\pagination\bootstrap-5.blade.php
ir pakeiskite atitinkamas eilutes į šias:
{{-- Previous Page Link --}}
@if ($paginator->onFirstPage())
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.first')">
<span class="page-link" aria-hidden="true">«</span>
</li>
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
<span class="page-link" aria-hidden="true">‹</span>
</li>
@else
<li class="page-item">
<a class="page-link" href="{{ \Request::url() }}" rel="first" aria-label="@lang('pagination.first')">«</a>
</li>
<li class="page-item">
<a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">‹</a>
</li>
@endif
...
{{-- Next Page Link --}}
@if ($paginator->hasMorePages())
<li class="page-item">
<a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">›</a>
</li>
<li class="page-item">
<a class="page-link" href="{{ \Request::url().'?page='.$paginator->lastPage() }}" rel="last" aria-label="@lang('pagination.last')">»</a>
</li>
@else
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
<span class="page-link" aria-hidden="true">›</span>
</li>
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.last')">
<span class="page-link" aria-hidden="true">»</span>
</li>
@endif
Daugiau apie puslapiavimą skaitykite oficialioje Laravel 10.x dokumentacijoje, skiltyje Database: Pagination.