Laravel comes up with a paginator that generates HTML compatible with the Tailwind CSS framework. But Laravel allows you to apply custom pagination HTML structure.
So, if you want to use your own pagination’s HTML structure and styles, you can do it by creating a custom blade template. Let’s create a blade template – myPagination.blade.php
inside the resources/views
folder and put this snippet inside –
@if ($paginator->hasPages())
<ul class="pagination">
{{-- Previous Page Link --}}
@if ($paginator->onFirstPage())
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
<span class="page-link" aria-hidden="true">
<i class="bi bi-caret-left"></i>
</span>
</li>
@else
<li class="page-item">
<a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">
<i class="bi bi-caret-left"></i>
</a>
</li>
@endif
{{-- Pagination Elements --}}
@foreach ($elements as $element)
{{-- "Three Dots" Separator --}}
@if (is_string($element))
<li class="page-item disabled" aria-disabled="true"><span class="page-link">{{ $element }}</span></li>
@endif
{{-- Array Of Links --}}
@if (is_array($element))
@foreach ($element as $page => $url)
@if ($page == $paginator->currentPage())
<li class="page-item active" aria-current="page"><span class="page-link">{{ $page }}</span></li>
@else
<li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
@endif
@endforeach
@endif
@endforeach
{{-- Next Page Link --}}
@if ($paginator->hasMorePages())
<li class="page-item">
<a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">
<i class="bi bi-caret-right"></i>
</a>
</li>
@else
<li class="page-item disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
<span class="page-link" aria-hidden="true">
<i class="bi bi-caret-right"></i>
</span>
</li>
@endif
</ul>
@endif
Once you have the pagination template ready. You can use that template to generate pagination links for a collection like this –
{!! $users->links('myPagination') !!}
You can read more about Laravel’s pagination from here – https://laravel.com/docs/master/pagination