Digitalmapia adalah situs dimana semua orang bisa menulis artikelnya sendiri. Klik "Login/Register untuk masuk, lalu klik "Tulis Artikel" untuk mulai menulis.

Menggunakan pagination pada Laravel

Sepertinya hampir setiap aplikasi berbasis web yang memiliki fungsi untuk mengatur data memerlukan pagination ketika menampilkan data yang cukup banyak.

Pagination adalah solusi yang cukup baik untuk mengatasi kelebihan informasi. Saya pikir hampir semua orang tahu cara menggunakan pagination.
Namun, untuk membuat sistem pagination dari awal akan sangat memakan waktu dan juga membosankan. Ada banyak potongan program yang harus anda tulis hanya untuk menampilkan pagination sesuai dengan jumlah data dari database dan posisi anda melihat data saat ini, kemudian menampilkannya pada bagian bawah data.

Untungnya, pagination merupakan salah satu dari sekian banyak fitur pada Laravel dimana kita bisa menggunakannya dengan lebih mudah tanpa harus membuat dari awal. Membuat pagination dari awal bisa menjadi mimpi buruk, sedangkan jika anda tidak menggunakan pagination tentu kasihan pengguna anda jika harus melihat terlalu banyak data dalam satu waktu.

Apa itu Pagination

Pagination adalah suatu cara menampilkan data yang banyak ke dalam beberapa halaman. Ketika awal mula membuat sebuah aplikasi web, anda mungkin tidak memerlukan pagination. Namun, seiring berjalannya waktu dan semakin banyak data yang harus ditampilkan, maka pagination akan menjadi sangat penting. Jika anda menampilkan banyak data sekaligus dalam satu waktu, maka hal itu akan memperlambat proses pengambilan data dari database dan menyebabkan aplikasi menjadi lambat.

Dengan menggunakan pagination, hanya beberapa set data saja yang akan diambil dari database dan ditampilkan langsung pada aplikasi. Pada database, jumlah data dihitung dan dibagi-bagi menjadi beberapa halaman tergantung dari berapa banyak yang ingin anda tampilkan per halamannya. Kemudian jumlah halaman diperkirakan dan dijadikan nomor halaman pada bagian bawah tampilan data. Semoga anda mengerti (sudah mengerti sebelumnya) tentang apa itu pagination.

Menggunakan method paginate pada Laravel

Seperti yang sudah saya jelaskan, Laravel bisa mempermudah pembuatan pagination. Pada Eloquent maupun pada query builder-nya Laravel, terdapat method paginate yang bisa menentukan berapa jumlah data yang ingin ditampilkan, dimana semuanya sudah di-handle oleh Laravel.

Misal, dengan menggunakan Eloquent anda bisa mengambil data dari database dengan menggunakan method paginate sebagai berikut:

$users = User::paginate(60);

atau jika menggunakan query builder:

$users = User::paginate(50);

Kemudian, pada bagian bawah dari data yang ditampilkan (di bawah foreach), anda bisa menambahkan link pagination dengan cara sebagai berikut:

{{ $users->links(); }}

Contoh kode lengkap yang bisa anda gunakan untuk membuat pagination adalah sebagai berikut:

routes.php

Route::get('/', function()
{
	$products = Product::paginate(50);
	return View::make('tampilkan')->with('products', $products);
});

views/tampilkan.blade.php

  @foreach($products as $product)
  	<tr>
  		<td>{{ $product->name }}</td>
  		<td>{{ $product->price }}</td>
  		<td>{{ $product->stock }}</td>
  		<td>
  			{{ Link::edit('product/edit/'.$product->id) }} | 
  			{{ Link::delete('product/delete/'.$product->id) }}
  		</td>
  	</tr>
  @endforeach

  {{ $products->links() }}

Mudah bukan? dengan menggunakan Laravel pembuatan pagination bisa semudah itu. Namun, mungkin ada kalanya anda perlu untuk mengubah tampilan pagination tersebut supaya sesuai dengan keinginan anda, misalnya supaya sesuai dengan CSS yang telah anda buat. Anda bisa melakukannya dengan cara membuat custom pagination caranya akan saya jelaskan pada bagian dibawah ini.

Membuat Custom Pagination

Untuk membuat custom pagination pertama-tama anda buat sebuah folder baru, pada app/views. Misal, folder tersebut anda beri nama structure. Anda boleh memberi nama lain jika anda mau. Setelah itu, pada folder tersebut buat sebuah file baru bernama pagination.blade.php. Contoh isi file tersebut adalah sebagai berikut:

<?php

@if ($paginator->getLastPage() > 1)
<ul class="ui pagination menu">  
  <a href="{{ $paginator->getUrl(1) }}"
    class="item{{ ($paginator->getCurrentPage() == 1) ? ' disabled' : '' }}">
    <i class="icon left arrow"></i> Previous
  </a>
  @for ($i = 1; $i <= $paginator->getLastPage(); $i++)
  <a href="{{ $paginator->getUrl($i) }}"
    class="item{{ ($paginator->getCurrentPage() == $i) ? ' active' : '' }}">
      {{ $i }}
  </a>
  @endfor
  <a href="{{ $paginator->getUrl($paginator->getCurrentPage()+1) }}"
    class="item{{ ($paginator->getCurrentPage() == $paginator->getLastPage()) ? ' disabled' : '' }}">
    Next <i class="icon right arrow"></i>
  </a>
</ul>  
@endif
?>

Silahkan anda ubah kode diatas sesuai dengan kebutuhan anda. Misalnya, mengubah nama class dan lain-lain. Setelah itu, buka file app/config/view.php, lalu
ubah key pagination menjadi sebagai berikut:

'pagination' => 'structure/pagination'

Dengan cara seperti itu, ketika anda menuliskan $products->links() , maka yang ditampilkan bukan lagi pagination bawaan dari laravel, tetapi pagination yang barusan anda buat. Selamat mencoba!

Laravel Wallpapper
  • Yoga Try Utomo

    tutorial paling mantap yg sudah saya temukan..terimakasih mas..tapi saya ingin bertanya bagaimana jika ingin membuat penomoran pada tabelnya? saya sudah bisa membuat penomoran, tapi saat pindah page(pada pagination), nomornya akan kembali dari 1..mohon solusinya mas..terima kasih