Tutorial Laravel 5.5 - Pagination

Post a Comment

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.

Related Posts

Post a Comment