This document was uploaded by user and they confirmed that they have the permission to share
it. If you are author or own the copyright of this book, please report to us by using this DMCA
report form. Report DMCA
Membuat CRUD Laravel Part I Pada tulisan sebelumnya saya telah membahas beberapa hal sebagai berikut:
Laravel : A Framework for web Artisans
Membuat Hello World di Laravel.
Cara menggunakan “migration” pada Laravel
Cara melakukan seeding pada Laravel
Setelah anda membaca tentang apa itu Laravel, cara membuat „Hello World‟, migration dan seeding, Kali ini, kita akan membahas mengenai
cara
membuat
aplikasi
CRUD
sederhana
dengan
menggunakan Laravel. Artikel kali ini dibuat sesederhana yang saya bisa, sehingga mudah dipelajari oleh pemula sekalipun. Twitter Bootstrap Untuk membuat user interface, kita akan menggunakan bantuan
Twitter Bootstrap. Untuk itu, silahkan unduh terlebih dahulu disini. Kemudian extract hasil unduhan anda. Setelah di-extract akan menemukan tiga folder didalamnya yaitu folder css, fonts dan
js. Copy ketiga folder tersebut ke dalam direktori `public`-nya Laravel.
Bootstrap di dalam direktori publik laravel Setelah Twitter Bootstrap anda pindahkan ke direktori public, berarti sudah siap untuk digunakan pada aplikasi Laravel yang akan kita buat. Oleh karena itu, marilah kita lupakan sejenak mengenai Twitter Bootstrap ini dan memulai langkah selanjutnya. Database Tabel Sekarang, marilah kita membuat sebuah tabel baru untuk menampung data yang akan kita gunakan dalam tutorial kali ini. Misalnya, tabel tersebut akan menampung data-data buku yang akan dijual. Dengan menggunakan command-line, jalankan perintah php artisan migrate:make create_books_table. Maka, secara otomatis akan tercipta sebuah file baru pada direktori app/database/migrations. Buat definisi tabel sebagai berikut pada
file migrasi tersebut:
//------------------------------------------------------------------------------------------------------------//
class CreateBooksTable extends Migration {
Lalu jalankan perintah php artisan migrate melalui command-
line. Maka secara otomatis akan tercipta sebuah tabel baru bernama `books`, anda bisa melihatnya melalui phpmyadmin. CRUD CRUD merupakan singkatan dari Create, Read, Update dan Delete. Untuk
itu
mari
kita
bahas
satu
persatu
mulai
dari
Create
(memasukan data ke dalam database). Create Untuk memasukan data ke dalam database kita akan menggunakan sebuah form. Pertama-tama, buat sebuah file baru pada direktori app/views/ dengan nama layout.blade.php. Kemudian, pada file tersebut, buat layout HTML sebagai berikut: <meta charset='utf-8' /> CRUD App
Perhatikan bahwa Laravel menggunakan Blade sebagai templating
engine. Apabila anda masih belum mengerti tentang Blade, tidak masalah. Blade adalah sesuatu yang mudah, anda akan mengerti setelah menyelesaikan tutorial ini. Selanjutnya, masih pada folder app/views, buat sebuah file baru bernama newbook.blade.php:
@extends('layout')
@section('content') Hello, Semua form akan ditempatkan disini! @stop
File inilah yang nantinya akan digunakan untuk menampilkan form yang akan kita buat pada browser. Pada file tersebut anda tidak perlu menulis lagi tag `html`, `title` , `body` karena sudah di-
extends
dari
file
layout.blade.php
dengan
menggunakan
@extends('layout'). Semua yang akan ditampilkan di browser bisa anda simpan diantara @section('content') dan @stop.
Selanjutnya, tambahkan definisi form pada file tersebut:
Akses route tersebut melalui browser, maka akan tampil form seperti berikut ini:
Memasukan data ke database Selanjutnya,
mari
kita
buat
Model
dan
Controller
untuk
memasukan data diinputkan ke dalam database. Buat sebuah file dengan nama Book.php pada direktori app/models:
Harus diperhatikan bahwa nama class perlu disesuaikan dengan nama tabel yang digunakan, karena pada contoh kali ini kita menggunakan tabel bernama books, maka nama class yang dibuat haruslah Book. Seperti halnya pada Model User, karena nama tabelnya users. Sebenarnya, anda juga bisa menentukan nama
Model sesuka hati. Namun, caranya tidak akan dibahas pada tulisan ini. Mungkin lain kali akan saya bahas. Ok, setelah Model anda buat, selanjutnya mari kita buat controller. Pada direktori app/controllers buatlah sebuah file baru dengan nama BookController.php :
class BookController extends BaseController { }
?>
Setelah itu, buat fungsi untuk memasukan data buku baru ke dalam database:
class BookController extends BaseController { public function store(){
Bagian Terakhir Ok, setelah Model dan Controller dibuat, langkah selanjutnya yang harus dilakukan adalah membuat route baru yang mengarah kepada fungsi yang kita buat di dalam Controller. Buka routes.php, tambahkan route sebagai berikut:
disesuaikan dengan nama Controller dan Action yang kita tuju. Selesai. Anda sekarang bisa mencobanya dengan memasukan data pada form kemudian tekan tombol submit. Lalu, cek di database apakah data yang diinputkan sudah masuk. Konklusi Diatas
kita
menggunakan
telah Laravel.
membahas Yaitu
mengenai
dengan
cara
membuat
Create
membuat
Model,
Kemudian membuat View yang bisa mengirim data melalui form, data pada form tersebut kemudian dikirim ke controller untuk disimpan ke dalam database dengan menggunakan Class Model yang telah dibuat. Selanjutnya, pada Part 2 kita akan membahas mengenai cara menampilkan data (Read).
Membuat CRUD Sederhana pada Laravel : Part 2
Sebelumnya kita telah membahas cara memasukan data ke dalam database dengan menggunakan Laravel (Create). Kali ini kita akan membahas tentang cara menampilkan data dari database. Ada tiga tahapan yang akan dilakukan yaitu:
Membuat route.
Mengirim data ke view.
Membuat looping.
Pertama-tama marilah kita membuat sebuah route baru sebagai berikut:
Route::get('booklist', function(){
});
Setelah itu, kita akan mengambil semua data dari tabel books yang telah kita buat sebelumnya. Ingat, untuk mengakses tabel books kita akan menggunakan Model bernama Book. Untuk melakukannya tambahkan Book::all() pada route yang telah kita buat:
Route::get('booklist', function(){
$books = Book::all();
});
Setelah itu, kita akan memanggil sebuah view sekaligus mengirim variable $books ke view tersebut.
Jika, anda mengakses route tersebut, bisa dipastikan sebuah pesan error akan muncul. Itu karena view bernama listbook masih belum kita buat. Oleh karena itu, mari kita buat view tersebut. Buat sebuah file baru bernama listbook.blade.php  Sebagai berikut:
@extends('layout')
@section('content') @stop
Pada route, kita telah mengirimkan sebuah variable bernama booksdata yang bisa diakses melalui view. Variable tersebut bersisi semua data dari tabel books yang bisa kita tampilkan dengan bantuan looping :
@extends('layout')
@section('content') <section class="container">
Title
Author
Description
Price
@foreach($booksdata as $book)
{{ $book->title }}
{{ $book->author }}
{{ $book->description }}
{{ $book->price }}
@endforeach
@stop
Jika anda perhatikan pada code diatas, kita menggunakan {{ $book->title }} untuk judul buku, {{ $book->author }} untuk pengarang dsb. Syntax yang digunakan yaitu blade, dimana {{ $book->title }} bisa disamakan dengan title; ?> . Sekarang, anda bisa buka route „booklist‟ melalui browser, maka semua data yang berada pada table „books‟ akan ditampilkan dalam bentuk table. Cara akses route tersebut misal:
http://lrv.dev/booklist
Atau jika anda menggunakan domain „localhost‟ :
http://localhost/booklist
Kita telah membahas mengenai Create dan Read. Pada bagian selanjutnya, kita akan membahas mengenai Update.
Bersambung
Membuat CRUD sederhana pada Laravel : Part 3 Pada Tulisan sebelumnya kita telah membahas tentang Create dan Read. Sekarang, mari kita melangkah ke tahap selanjutnya, yaitu Update. Pertama-tama, kita akan menampilkan link edit pada tabel yang telah kita buat sebelumnya ketika menampilkan data. Ubah file listbook.blade.php menjadi sebagai berikut: @extends('layout')
merupakan helper untuk membuat HTML link. Dimana, link tersebut akan mengarah ke method edit pada controller bernama
BookController. Jika anda jalankan di browser (dengan membuka route booklist), maka akan muncul error sebagai berikut: ErrorException Route [BookController@edit] not defined. (View: /var/www/laravel/app/views/listbook.blade.php) Error tersebut muncul karena kita belum membuat route yang mengarah ke method tersebut, disamping method itu sendiri belum kita
buat.
Untuk
itu,
tambahkan
route
sebagai
berikut
pada file routes.php : Route::get('book/edit/{id}', 'BookController@edit'); Kemudian, tambahkan action “edit” pada BookController: public function edit($id) { # code... } Jika, anda klik pada salah satu link yang ditampilkan pada tabel, maka akan muncul halaman kosong pada browser. Untuk mengubah halaman kosong tersebut menjadi halaman edit, ubah
fungsi edit
yang
barusan
kita
tambahkan menjadi
sebagai
berikut: public function edit($id) { $book = Book::find($id); return View::make('editbook')->with('book', $book); } Jika, anda jalankan lagi maka kali ini bukan halaman kosong yang anda dapatkan, tetapi anda akan melihat error sebagai berikut: InvalidArgumentException View [editbook] not found. Ini
dikarenakan
kita
bernama editbook. Untuk
belum itu,
pada
membuat folder
buatlah file baru dengan nama editbook.blade.php : @extends('layout')
} Dan, jangan lupa untuk menambahkan route baru sebagai berikut: Route::post('book/update', 'BookController@update'); Setelah itu, pada file editbook.blade.php, ubahlah {{ Form::open()) }} menjadi {{ Form::open(array('action' => 'BookController@update')) }} Sekarang, cobalah anda ubah judul dari buku tersebut, lalu klik tombol update. Maka, data judul buku tersebut akan berubah pula di database.
Membuat CRUD Sederhana pada Laravel : Part 4
Pada
kesempatan
kali
ini
kita
akan
membuat
fungsi delete .Fungsi delete digunakan untuk menghapus data yang telah kita masukan ke dalam database. Pertama-tama,
tambahkan link
„delete‟Â di
sebelah
link
edit
dengan
cara
mengubah file listbook.blade.php sebagai berikut: @extends('layout')
yang digunakan untuk menampilkan link „delete‟. Apabila anda jalankan di browser dengan cara mengakses route „booklist‟, maka akan muncul error sebagai berikut: ErrorException Route [BookController@delete] not defined. (View: /var/www/laravel/app/views/listbook.blade.php) Hal,
ini
disebabkan
menambahkan route dan action yang
kita
belum
diperlukan.
Oleh
karena itu, tambahkan route baru sebagai berikut: Route::get('book/delete/{id}', 'BookController@delete'); Jika, anda jalankan lagi pada browser maka tampilan akan berjalan normal dan sudah terdapat link delete didalam tabel. Namun, apabila link tersebut anda klik, tetap akan terjadi error, karena
method „delete‟ masih
pada BookController, tambahkan berikut:
belum
dibuat,
untuk
itu
fungsi delete sebagai
public function delete($id) { # code... } Execute Delete Sekarang, jika anda klik „delete‟ maka tidak akan muncul lagi pesan error. Namun, data tersebut masih belum terhapus dari dalam database karena kita belum menambahkan apa-apa pada method delete. Untuk itu, ubah fungsi delete menjadi sebagai berikut: public function delete($id) { $book = Book::find($id); $book->delete(); return Redirect::to('booklist'); } Sekarang, jika anda klik link bersangkutan
akan
dihapus.
delete maka data buku yang
Perhatikan
bahwa
kode
return
Redirect::to('booklist'); digunakan untuk mengembalikan (redirect) anda ke halaman dengan route „booklist‟.
Membuat autentikasi pengguna dengan menggunakan Laravel Autentikasi merupakan hal yang sangat penting dalam sebuah website. Dengan menggunakan autentikasi kita bisa mencegah orang yang tidak berkepentingan untuk mengakses situs yang kita buat. Saya rasa anda sudah paham tentang apa itu autentikasi, jadi saya pikir cukup sudah untuk penjelasannya. Mari kita lanjutkan ke cara membuat autentikasi menggunakan Laravel. Sebelumnya, saya asumsikan anda telah melakukan instalasi Laravel pada localhost dan melakukan setting database. Pertama-tama yang harus kita buat adalah tabel user. Untuk membuat tabel user, buat migrasi dengan menjalankan perintah sebagai berikut: php artisan migrate:make create_user_table Buka folder app/migration, anda akan melihat sebuah file berisi class yang bernama „CreateUserTable‟. Pada class tersebut terdapat dua method bernama „up‟ dan „down‟. Method „up‟ digunakan untuk membuat tabel, sedangkan method „down‟ digunakan untuk menghapus tabel. Tambahkan definisi tabel sebagai berikut pada method „up‟:
berikut: Schema::drop('users'); Selanjutnya, pada command line jalankan perintah: php artisan migrate Dengan begitu, sebuah tabel bernama „users‟ akan dibuat pada database, lengkap beserta seluruh field-field yang dibutuhkan. Untuk membuat sistem autentikasi, diperlukan sebuah model, controller dan view. Model yang digunakan adalah model bernama „User‟ yang biasanya sudah ada secara default pada instalasi Laravel. Kemudian untuk controller kita akan membuat sebuah controller
baru
bernama
„UserController‟,
untuk
membuat
„UserController‟, jalankan perintah sebagai berikut menggunakan
command line:
php artisan controller:make UserController Maka, sebuah file baru bernama „UserController.php‟ akan tercipta pada folder app/controller.
Membuat Halaman Registrasi Setelah controller kita buat, sekarang kita akan menampilkan sebuah halaman registrasi. Pertama-tama, kita akan mengubah fungsi „create‟ pada „UserController‟ menjadi fungsi „register‟: public function register() { return View::make('register'); } Pada fungsi register diatas, kita akan diarahkan pada sebuah view bernama „register‟. Namun, view tersebut masih belum kita buat. Untuk itu pada folder app/views tambahkan sebuah file baru bernama „register.blade.php‟: @extends('layout') @section('content')
@stop Setelah itu, buatlah route baru pada file routes.php seperti berikut ini: Route::get('register', 'UserController@register'); Route::post('store', 'UserController@store'); Setelah route dibuat, sekarang anda bisa membuka
halaman
register yang barusan anda buat melalui browser dengan cara mengakses route „register‟.Misal: http:/localhost/laravel/register
Registrasikan Pengguna Setelah halaman registrasi kita buat, kita akan memasukan data dari form yang barusan kita buat ke dalam database. Pada form tersebut terdapat kode sebagai berikut: {{Form::open(array('action' => 'UserController@store')) }} Itu berarti, ketika disubmit, data dari form tersebut akan di-handle Oleh method „store‟ pada „UserController‟. Untuk itu silahkan buka „UserController‟ kemudian tambahkan perintah sebagai berikut ke dalam method „store‟: $user = new User();
return Redirect::to('register')->with('pesan', 'Registrasi berhasil!'); Sekarang, apabila anda isi form tersebut kemudian tekan tombol „Registerin Dong!‟ (seperti submit), maka data yang anda masukan akan tersimpan di database.
Membuat Fitur Login Untuk membuat halaman Login, pertama-tama buatlah dua buah fungsi baru yaitu „login‟ dan „authenticate‟: public function login(){ }
public function authenticate(){ } Selain itu, buatlah dua buah route baru pada file routes.php sebagai berikut: Route::get('login', 'UserController@login'); Route::post('authenticate', 'UserController@authenticate');
Halaman Login Sekarang, kita akan membuat tampilan halaman login. Pada method „login‟ tambahkan baris perintah sebagai berikut: return View::make('login'); Kemudian pada direktori app/views tambahkan sebuah view baru dengan nama file login.blade.php: @extends('layout')
Autentikasi Ketika tombol login di-klik, form akan diarahkan ke method „authenticate‟ pada UserController. Pada method inilah autentikasi dilakukan, untuk itu tambahkan baris perintah sebagai berikut pada method authenticate: if (Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password')))) { echo "login berhasil"; } else{ return Redirect::to('login')->with('pesan_error', 'Login gagal, email atau password salah!'); }
Sekarang, jika anda tekan tombol „login‟ dan autentikasi berhasil maka
akan
tampil
tulisan
“login
berhasil”.
Namun,
jika
autentikasi gagal, maka sebuah pesan kesalahan akan ditampilkan pada halaman login.
Membuat Halaman Dashboard Sebelumnya, apabila kita sudah berhasil login kita hanya akan melihat tulisan „login berhasil‟. Nah, kali ini kita akan membuat supaya pengguna diarahkan ke halaman dashboard apabila login berhasil.
Buat
sebuah
controller
„DashboardController‟:
baru
bernama
} ?> Setelah itu, buatlah sebuah route baru pada routes.php sebagai berikut: Route::get('dashboard', 'DashboardController@index'); Kemudian, jangan lupa untuk membuat sebuah view baru bernama „dashboard.blade.php‟. Setelah itu, ubah autentikasi yang ada pada method authenticate menjadi sebagai berikut: function authenticate(){
return Redirect::to('login')->with('pesan_error', 'Login gagal, email atau password salah!'); } Sampai disini, apabila anda mencoba login kembali maka akan diarahkan ke halaman dashboard. Tentu halaman dashboard yang
dimaksud adalah halaman kosong, mengingat kita baru membuat viewnya saja, tanpa ada isinya.
Membuat fungsi logout Sekarang, saatnya kita membuat fungsi logout. Untuk itu, kita akan membuat view „dashboard‟ yang telah kita buat dari halaman kosong menjadi sebagai berikut: @extends('layout')
@section('content')
Dashboard
@stop
Selanjutnya, perhatikan pada halaman dashboard diatas terdapat kode sebagai berikut:
}); Kemudian, pada route tersebut kita akan memasukan product yang dimaksud ke dalam cache shopping cart, setelah itu kita tampilkan
isi dari shopping cart tersebut dalam bentuk tabel. Ubah kode diatas menjadi sebagai berikut: Route::get('product/cart/{id}', function($id){ $product = Product::find($id);
Menghapus item dari dalam shopping cart Jika anda perhatikan view yang telah anda buat diatas, akan terdapat link delete yang mengarah ke route cart/delete/{id}. Untuk itu, mari kita buat route tersebut. Tambahkan syntax berikut pada app/routes.php: Route::get('cart/delete/{id}' , function(){ Cart::remove($id); return View::make('productcart')->with('cart_content', $cart_content); }); Perhatikan
bahwa
sebuah
item
dalam
cart
bisa
dihapus
berdasarkan rowid yang dimilikinya. Melakukan checkout Untuk melakukan checkout, kita akan membuat sebuah route sebagai berikut: Route::get('cart/checkout' , function(){
Perhatikan kode diatas, pada saat melakukan checkout, kita akan memindahkan semua data yang ada pada cart ke dalam sebuah tabel bernama transactions. Dengan demikian, jika kita melakukan checkout
sekarang,
transactions
masih
maka
akan
belum
kita
terjadi buat.
error
Untuk
karena
tabel
membuat
tabel
transactions, gunakan migrasi sebagai berikut: Schema::create('transactions', function($table){ $table->increments('id')->unsigned(); $table->string('product_id'); $table->string('form_id'); $table->string('qty'); $table->string('total_price'); $table->string('status'); $table->timestamps(); }); Kemudian
pada
app/models
tambahkan
transaction.php sebagai berikut:
} ?>
sebuah
model
Sekarang, jika anda kembali mencoba melakukan checkout. Maka data-data di dalam cart akan berhasil dimasukan ke dalam tabel transaction. semoga bermanfaat.
Cara melakukan manipulasi file image pada Laravel Terkadang ketika meng-upload sebuah file image pada aplikasi web yang kita buat, kita perlu melakukan image resizing, image crop, menambahkan watermark dan sebagainya, agar gambar yang kita upload bisa terlihat pas saat ditampilkan. Package Laravel untuk melakukan image resizing Untuk melakukan image resizing kita akan menggunakan sebuah package
bernama
intervention/image.
Untuk
itu,
tambahkan
"intervention/image": "1.*" di bagian require pada file composer.json : "require": { "laravel/framework": "4.1.25", "intervention/image": "1.*", },
Setelah itu jalankan perintah composer update melalui commandline.
Tunggu
beberapa
saat
hingga
package
terinstal.
Sebagai
catatan, anda perlu terhubung ke internet ketika melakukan proses ini. Setelah proses selesai, kemudian buka file app/config/app.php setelah itu pada bagian providers tambahkan kode berikut: 'Intervention\Image\ImageServiceProvider', Kemudian, tambahkan pula kode berikut pada bagian aliases: 'Image'
=> 'Intervention\Image\Facades\Image',
Setelah itu, package intervention/image sudah siap anda gunakan. Melakukan image crop dengan intervention/image Berikut adalah cara melakukan crop image dengan menggunakan intervention/image. $file_path = 'uploads/image.png';
$img = Image::make($file_path); $img->crop(500, 300); $img->save($file_path); perhatikan contoh diatas, misalnya kita mempunyai sebuah file gambar dengan nama image.png dimana file tersebut terletak pada
folder public/uploads. Kemudian kita mempersiapkan file gambar tersebut untuk diproses. Untuk itu, kita menggunakan perintah $img = Image::make($file_path);. Setelah siap, gambar tersebut kemudian di-crop dengan ukuran 500×300. File gambar asli masih tersimpan dengan ukuran sebenarnya, yang barusan kita crop adalah file gambar kloningan dari gambar asli tersebut. Kita secara otomatis mengkloningnya
ketika
menjalankan
perintah
$img
=
Image::make($file_path);. Setelah
gambar
hasil
kloningan
di
crop,
kemudian
kita
menyimpannya dengan perintah, $img->save($file_path);. Karena kita menyimpannya dengan path yang sama dengan gambar yang asli, maka gambar aslinya akan ditimpa dan hilang. Seolah-olah gambar asli tersebut yang kita crop. Jika, anda ingin gambar yang asli tetap ada, silahkan simpan dengan path yang berbeda. Melakukan image resizing Selain melakukan crop, anda juga bisa melakukan resize dengan cara sebagai berikut: $file_path = 'uploads/image.png';
Proses resize sangat mirip dengan crop, kita hanya mengganti $img>crop(500, 300); dengan $img->resize(500, 300);. Perbedaan resize dengan
crop
adalah,
ketika
menggunakan
crop
gambar
akan
dipotong menjadi berukuran sesuai dengan yang kita inginkan pada contoh diatas ukuran yang kita gunakan adalah 500 x 300. Karena, gambar tersebut dipotong, maka sebagaian dari gambar akan hilang. Sedangkan, pada resize, gambar tidak dipotong sehingga tidak ada bagian gambar yang hilang. Namun demikian, apabila kita terlalu memaksakan dalam melakukan resize maka gambar akan menjadi terlihat gepeng. Misal, kita melakukan resize gambar berukuran 500 x 300 menjadi 500 x 50, tentu gambar akan menjadi terlihat tidak normal. Jika anda ingin melakukan resize, usahakan dengan dimensi yang sama, misal gambar berukuran 1000 x 500 di-resize menjadi 500 x 250 (1000 x 500 = 2:1, 500 x 250 = 2:1 —- samasama 2:1). Menambahkan Watermark Selain itu, anda juga bisa menambahkan watermark pada file gambar dengan menggunakan intervention/image. Caranya cukup mudah: $file_path = 'uploads/image.png';
$watermark = 'uploads/watermark.png';
$img = Image::make($file_path); $img->insert($watermark); $img->save($file_path); NOTE: dokumentasi lebih lengkapnya bisa anda lihat disini : http://image.intervention.io/ Semoga bermanfaat.
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
Laravel,
terdapat
builder-nya
Eloquent method
maupun paginate
pada
query
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)
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,
@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, mencoba!