Tutorial Laravel 5.5 - Pagination


Pada artikel kali ini akan dijelaskan bagaimana cara untuk membuat pagination pada framework Laravel 5.5. Laravel sudah menyediakan 2 cara otomatis yaitu dengan menggunakan simplePaginate dan juga paginate.

Cara Penggunaan



$data = Items::where('name', 'like', '%'.$search.'%')->orderBy('id', 'DESC')->simplePaginate('5');

Contoh kode di atas adalah penggunaan dari simplePaginate. Sedangkan untuk penggunaan paginate dapat dilihat pada contoh kode di bawah ini.



$data = Items::where('name', 'like', '%'.$search.'%')->orderBy('id', 'DESC')->paginate('5');

Tidak ada perbedaan cara pemakaian antara simplePaginate dan Paginate. Namun hasil yang dimunculkan akan berbeda. Jika program yang dibuat hanya membutuhkan link "Next" dan "Previous" maka gunakanlah method simplePaginate. Method Paginate akan menampilkan link lengkap beserta dengan angka halamannya.


Menampilkan Hasil Pagination

Hasil yang dikembalikan dari method simplePaginate dan Paginate berupa object. 



<div class="container">
    @foreach ($data as $detail)
        {{ $detail->name }}
    @endforeach
    {{ $data->links() }}
</div>

Kode diatas adalah contoh cara untuk menampilkan hasil dari pagination yang dibuat. Untuk menampilkan data bisa menggunakan foreach seperti biasanya. Sedangkan untuk menampilkan link paginationnya menggunakan method links.

Anda juga bisa menambahkan variabel tambahan pada link pagination ini dengan menggunakan method append.



$data = Items::where('name', 'like', '%'.$search.'%')->orderBy('id', 'DESC')->simplePaginate('5');
$data->appends(['search' => $search]);

Cara tersebut bisa digunakan untuk pagination hasil search misalnya. Saat user menginputkan suatu string untuk disearch maka program akan menambahkan parameter search tersebut pada link pagination. Parameter yang ditambahkan bisa lebih dari 1, gunakan koma sebagai pemisah dari array tersebut.

Membuat Custom View Pagination

Anda juga dapat membuat tampilan pagination sendiri tanpa menggunakan default tampilan yang sudah disediakan. Berikut ini adalah cara untuk membuat custom view pagination.



{{ $data->links('pagination') }}

pagination adalah nama halaman custom view yang anda buat. Anda dapat memberinya nama sesuai dengan keinginan anda asal nama tersebut sesuai dengan file php yang anda buat.



@if ($paginator->hasPages())
    <ul class="pagination pagination">
        {{-- Previous Page Link --}}
        @if ($paginator->onFirstPage())
            <li class="disabled"><span>«</span></li>
        @else
            <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
        @endif

        @if($paginator->currentPage() > 3)
            <li class="hidden-xs"><a href="{{ $paginator->url(1) }}">1</a></li>
        @endif
        @if($paginator->currentPage() > 4)
            <li><span>...</span></li>
        @endif
        @foreach(range(1, $paginator->lastPage()) as $i)
            @if($i >= $paginator->currentPage() - 2 && $i <= $paginator->currentPage() + 2)
                @if ($i == $paginator->currentPage())
                    <li class="active"><span>{{ $i }}</span></li>
                @else
                    <li><a href="{{ $paginator->url($i) }}">{{ $i }}</a></li>
                @endif
            @endif
        @endforeach
        @if($paginator->currentPage() < $paginator->lastPage() - 3)
            <li><span>...</span></li>
        @endif
        @if($paginator->currentPage() < $paginator->lastPage() - 2)
            <li class="hidden-xs"><a href="{{ $paginator->url($paginator->lastPage()) }}">{{ $paginator->lastPage() }}</a></li>
        @endif

        {{-- Next Page Link --}}
        @if ($paginator->hasMorePages())
            <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
        @else
            <li class="disabled"><span>»</span></li>
        @endif
    </ul>
@endif

Baris kode diatas adalah contoh dari custom view yang saya buat dengan nama pagination.blade.php. Pada kode tersebut terdapat beberapa method yang sudah disediakan oleh Laravel untuk membuat custom pagination sendiri. Method-method tersebut sesuai dengan dokumentasinya adalah sebagai berikut :

  • $results->count()
  • $results->currentPage()
  • $results->firstItem()
  • $results->hasMorePages()
  • $results->lastItem()
  • $results->lastPage() (Not available when using simplePaginate)
  • $results->nextPageUrl()
  • $results->perPage()
  • $results->previousPageUrl()
  • $results->total() (Not available when using simplePaginate)
  • $results->url($page)

Anda dapat membuat custom view sesuai dengan kebutuhan anda dengan menggunakan kumpulan method di atas. Custom View ini mungkin anda butuhkan jika halaman yang anda buat misalnya tidak menggunakan bootstrap atau anda ingin mengubah jumlah angka pagination seperti contoh kode di atas. Demikianlah artikel Tutorial Laravel 5.5 - Pagination, semoga artikel ini dapat membantu anda. Selamat mencoba.
Tutorial Laravel 5.5 - Pagination Tutorial Laravel 5.5 - Pagination Reviewed by Donny Winarto on June 26, 2018 Rating: 5

3 comments:

  1. permisi guru..
    apa bisa sistem custom pagination ini digabung dengan ajax?? supaya ketika kita mengklik tombol panigationnya gak perlu reload semua halaman

    ReplyDelete
    Replies
    1. Harusnya sih bisa gan. Tapi harus gabung sama jquery juga. Jadi logikanya di link pagination nya dikasih event on click. Di onclicknya dibaca url dari a href nya terus manggil $.ajax dan nilai kembaliannya nanti ditampilkan di halaman contentnya yg berubah saja. Contoh sederhanya mungkin bisa baca di link luar ini sih https://hdtuto.com/article/laravel-55-ajax-pagination-example

      Delete
  2. #ralat
    permisi guru..
    apa bisa sistem custom pagination ini digabung dengan ajax?? supaya ketika kita mengklik tombol panigationnya gak perlu reload satu halaman penuh

    ReplyDelete

Powered by Blogger.