Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
Laravel 5
Presented by:
Networking Team 2013
KATA PENGANTAR
Puji Syukur kehadirat Allah SWT karena atas rahmat dan kemudahan yang diberikan-Nya,
modul tutorial dasar laravel ini dapat terselesaikan. Sebenarnya kami pun masih butuh banyak belajar
dalam mengembangkan web menggunakan framework laravel ini, mengingat banyak hal yang belum
kami pelajari serta versi laravel yang masih terus mengalami perubahan. Maka dari itu, saran dan
masukan serta sharing knowledge sangat kami butuhkan agar pengetahuan kami tentang framework
laravel dapat terus bertambah dan up to date.
Sebelumnya, kami mengucapkan terima kasih kepada:
1. Bapak Muhammad Eka Suryana, M.Kom selaku supervisor divisi Networking yang telah
membimbing dan memberikan masukan selama ini.
2. Seluruh anggota tim Networking 2013 atas kerjasamanya dalam mengerjakan project-
project Net.
3. Author blog dan tutorial Laravel online, terutama tentorweb (http://tentorweb.web.id)
yang menjadi referensi utama dalam pengerjaan modul tutorial dasar laravel ini.
Mudah-mudahan tutorial ini sedikitnya dapat membantu teman-teman yang akan baru
memulai belajar menggunakan framework laravel 5.1 ini.
Penyusun,
i
DAFTAR ISI
KATA PENGANTAR................................................................................................................................... i
DAFTAR ISI .............................................................................................................................................. ii
BAB I INTRO ............................................................................................................................................ 1
A. Apa itu Laravel ? .......................................................................................................................... 1
B. Kenapa Memakai Laravel ? ......................................................................................................... 1
C. MVC (Model-View-Controller)..................................................................................................... 1
D. Requirements .............................................................................................................................. 2
BAB II INSTALASI..................................................................................................................................... 3
A. Penginstalan Composer .............................................................................................................. 3
B. Penginstalan Laravel Package ..................................................................................................... 4
C. Create and Running New Laravel Project ................................................................................... 5
BAB III MENGENAL BASIC ROUTING LARAVEL ...................................................................................... 7
A. Routes-View ................................................................................................................................ 7
B. Routes-Controller........................................................................................................................ 9
BAB IV MENGIRIMKAN DATA DARI CONTROLLER KE VIEW (Routes-Controller-View) ..................... 14
BAB V MENGENAL BLADE LARAVEL ..................................................................................................... 21
A. Apa itu Blade pada laravel? ...................................................................................................... 21
B. Penggunaan Blade..................................................................................................................... 21
BAB VI KONFIGURASI DAN MIGRASI DATABASE ................................................................................ 26
A. Konfigurasi Database ................................................................................................................ 26
B. Migrasi Database ...................................................................................................................... 27
BAB VII MENGENAL ELOQUENT LARAVEL ........................................................................................... 33
A. Apa itu Eloquent ? ..................................................................................................................... 33
B. Penggunaan Eloquent ............................................................................................................... 33
BAB VIII PENERAPAN ALUR MVC ......................................................................................................... 40
BAB IX PEMBUATAN FORM DAN DATA POST HANDLING .................................................................. 49
BAB X PENANGANAN DATE DAN QUERY SCOPE ................................................................................. 60
BAB XI FORM REQUEST DAN VALIDASI ............................................................................................... 66
REFERENSI ............................................................................................................................................. 72
ii
BAB I INTRO
A. Apa itu Laravel ?
Laravel adalah sebuah Framework PHP yang bersifat opensource, Ditulis oleh Taylor
Otwell dengan lisensi dibawah MIT License. Dengan Laravel, tugas-tugas umum developer
dapat dikurangi pada sebagian besar proyek-proyek web seperti routing, session, dan
caching. Laravel dibuat untuk membantu para developer khususnya dalam membuat sebuah
web dengan sintak yang sederhana, elegan, ekspresif, dan menyenangkan. Seperti yang
ditulis dalam website nya :
Laravel is a clean and classy framework for PHP web development. Freeing you from
“ Laravel
spaghetti is a itclean
code, and
helps youclassy framework
create for applications,
wonderful PHP web development. Freeing
using simple, you
expressive
from Development
syntax. spaghetti code, it helps
should you create
be a creative wonderful
experience that applications,
you enjoy, notusing simple,
something that
expressive
is painful. syntax.
Enjoy Development
the fresh air! should be a creative experience that you enjoy, not
something that is painful. Enjoy the fresh air! “
C. MVC (Model-View-Controller)
Seperti kebanyakan framework php lainnya, Laravel menerapkan arsitektur MVC.
MVC atau kepanjangan dari Model-View-Controller adalah sebuah metode yang digunakan
dalam pengembangan suatu aplikasi yang memisahkan data (model) dari tampilan (View)
dan logic dari aplikasi itu sendiri (Controller). MVC memisahkan pengembangan aplikasi
berdasarkan komponen utama yang membangun sebuah aplikasi seperti manipulasi data,
user interface, dan kontrol dalam sebuah aplikasi. Kita harus memahami alur MVC ini dengan
baik agar memudahkan kita dalam mengembangkan web menggunakan Laravel.
Model digunakan untuk proses query atau manipulasi data ke/dari database.
Sedangkan View kaitannya erat dengan antarmuka / interface tampilan sebuah web seperti
HTML, CSS, dan JS dan data yang bersifat client. Controller adalah logika dari sebuah web
yang menjembatani komunikasi antara Model dan View. Jika digambarkan alur proses MVC
adalah sebagai berikut:
Penjelasan sistematika MVC akan diterangkan lebih lanjut pada saat praktek/implementasi
secara langsung.
D. Requirements
Laravel sangatlah mudah untuk dikonfigurasi dalam mengembangkan sebuah
proyek. Pada bagian ini akan dijelaskan software/tools apa saja yang diperlukan dalam
menunjang pengembangan web dengan menggunakan Laravel. Adapun kebutuhan yang
harus disediakan diantaranya :
• Text Editor
Pilih text editor yang sesuai dengan kebutuhan atau selera. Terdapat banyak pilihan text
editor, diantaranya Notepad++, PHPStorm, Sublime Text, Aptana, Netbeans, dan lain-
lain.
• Webserver dan Database
Yang terpenting dalam instalasi Laravel yaitu bahwa versi PHP minimal versi 5.4 ke atas
dan sudah terinstal ekstensi php. Penulis menggunakan XAMPP versi 4.3.11 yang dapat
diunduh di website nya atau sudah disediakan dalam paket CD.
• Composer
Untuk dapat menginstal laravel kita membutuhkan composer. Composer adalah sebuah
dependency ‘manager’ untuk PHP. Kita dapat menambah library yang dibutuhkan untuk
website secara otomatis tanpa perlu mendownload satu persatu. Mirip dengan apt-
get install pada sistem operasi linux.
• Klik dua kali file tersebut sehingga muncul dialog setup install composer kemudian
klik Next.
• Check versi php pada tombol “browse”, kemudian masukan path php yang sudah
diiinstal di komputer. Disini dicontohkan path php nya yaitu di
“C:/xampp/php/php.exe” kemudian klik next.
Pada akhir instalasi, untuk memastikan composer telah terinstal, cek keberadaan composer
dengan menyalin path berikut “C:\ProgramData\ComposerSetup\bin” pada ‘PATH’ di file
explorer windows. FYI, ProgramData tersembunyi pada Windows 7.
Jika sudah menemukan direktori laravel, kita harus menyalin seluruh path direktori tersebut
pada ‘Path’ di environment variables Windows sehingga Laravel dapat dieksekusi dari
direktori mana saja. Langkahnya sebagai berikut:
Buka Control Panel -> pilih System -> pilih Advanced system settings -> pilih Environment
Variables -> scroll System variables -> edit Path. Paste seluruh path direktori yang sudah
disalin tadi pada ‘variable value’. FYI, jangan lupa menambahkan semicolon (;) sebelum
mem-paste path direktori laravel, jika sebelumnya sudah terdapat path lain di variable value.
Klik OK pada dialog box. Buka command prompt baru, kemudian ketik ‘laravel’ pada prompt
untuk memastikan bahwa laravel telah terinstal dengan baik atau tidak.
Ketik http://localhost:8000 pada browser. welcome page untuk project baru akan muncul seperti
ditunjukkan pada gambar berikut.
1. Silakan buka editor kalian, buka pada bagian folder “app”. Kemudian, buka file routes.php
*NB : perhatikan pada Route yang pertama saja.
2. Sekarang, buka folder “resources” kemudian buka folder “view”, di dalamnya sudah
terdapat file bernama “welcome.blade.php”. cari tulisan “Laravel 5” dalam source codenya,
ganti dengan kalimat lain.
Penjelasan:
return view (“welcome”) pada routes.php menunjukkan bahwa routes memanggil file
welcome.blade.php pada folder view. Di dalam file welcome.blade.php tersebut terdapat
sourcecode bertipe HTML yang bertanggung jawab dalam memunculkan tulisan pada
welcome page ketika kita menjalankan localhost:8000.
Buka command prompt baru, arahkan ke direktori project dengan menggunakan perintah cd:
cd <project_directory>
Setelah itu, cek folder Controller. WelcomeController.php akan tergenerate secara otomatis
di folder Controller.
Buat fungsi baru dengan nama index(), silakan isi function index dengan me-returnkan
kalimat apapun, contohnya seperti di bawah ini.
Selanjutnya, buka file routes.php kembali. Buat routes baru yang akan merutekan fungsi index di
dalam file WelcomeController yang baru saja dibuat tadi. Jangan lupa untuk memberi tanda comment
dahulu pada routes yang lama, agar tidak terjadi error ketika proses eksekusi.
Penjelasan:
Route::get(‘/’,’WelcomeController@index’) berarti untuk root web atau ‘ / ’(tanda slash-nya) akan
diarahkan ke controller “WelcomeController” dan mengeksekusi function “index”.
*root web : tampilan paling awal pada sebuah web ( contoh : laravel.com/...)
Sekarang kita akan bermain-main lagi dengan routes, agar lebih memahami alurnya. Kembali ke
routes.php, tambah satu route baru. Lihat gambar di bawah ini.
Silahkan dicoba sampai bosen, jangan cuman nyobain yang kayak diatas yak. Banyak-banyak nyobain
sampai bisa. Kalau memang sudah oke, mari kita melangkah lebih lanjut. Sekarang kita akan coba
untuk mengarahkan sebuah function untuk tidak me”return” string, namun sebuah file “view”.
1. Buat sebuah folder bernama “laman” di folder “resources>views”.
2. Buat sebuah file di dalam folder “laman” bernama “aboutme.blade.php”.
(.blade-nya ditulis ya, penjelasannya nanti).
3. Arahkan function “aboutme” yang ada di WelcomeController ke view “aboutme”.
kalau bingung cek gambar.
4. Akses http://localhost:8000/aboutme, maka ? tampilannya ?
Nah, untuk memberikan tampilan yang sedikit berbeda, kita akan coba untuk memberikan sentuhan
HTML pada file “aboutme.blade.php kita.
Pada bab sebelumnya, kita sudah mainan routing, saatnya kita lebih jauh mendalami pertukaran data
antara controller dan view. Untuk kali ini kita akan bermain-main dengan mengirimkan data dari
controller ke view. Data yang mungkin kita dapat dari database ataupun array tertentu, kita otomatis
menyimpannya di controller. Nah di tutorial kali ini, data yang tersimpan itu akan kita kirimkan ke
“dummy view”, alias file viewnya memang benar-benar hanya menampilkan data saja, yang
memanipulasi adalah controller. Baik, tanpa panjang lebar mari kita mulai :
1. Silahkan buka routes.php kemudian hapus semua code disana. Tambahkan baris code baru berikut,
penjelasan :
2. Silahkan dicoba buka browser dan akses ke http://localhost:8000/aboutme. Perhatikan ada pesan
kesalahan, yaitu LamanController tidak ada, atau does not exist.
3. Maka kita harus membuat sebuah controller baru bernama LamanController, sesimpel itu saja. Ya,
memang membuat sebuah file php sebagai controller bisa menggunakan klik kanan pada folder
controller > add new / create new file php > kasih nama. Tapi seperti bab sebelumnya, kita akan
gunakan artisan lewat cmd dalam membuat controller baru.
1. Ayok kita buat controller baru namanya “LamanController” berdasar data help diatas
maka kita bisa simpulkan perintah yang harus kita masukkan sebagai berikut :
3. Buka, terus mari kita buat sebuah function yang bernama “aboutme” yang akan
dieksekusi saat kita mengakses laman aboutme tadi.
Nb : untuk isi functionnya silahkan di return dengan string saja dahulu.
aboutme.blade.php
Setelah itu test. akses laman aboutme kalian di web browser. apakah benar telah
mengakses file yang kita rujuk.
9. Kalau sudah, coba kita main-main dengan sedikit mengirimkan nilai ke view. Jadi
ceritanya kita akan mengirim data nama ke view aboutme tadi. Buka controller,
LamanController kemudian edit return tadi menjadi seperti bawah ini => lihat gambar :
NB : Pada dasarnya kita juga bisa menggunakan tag biasa kemudian panggil dengan
echo, namun di dalam blade sudah disediakan tag yang lebih keren dan ringkas daripada
php. Cek gambar atas.
Kalau sudah silahkan cek di laman aboutme dari web browser kalian.
Ada perbedaan sedikit dalam menerima , karena dia multiple data yang dikirim.
12. Atau kalau kalian memang sudah pernah megang Codeigniter sebelumnya pastinya
sudah ga asing dengan metode berikut, dan masih ada cara yang lain, so… explore your
self ya :D
Cek dis ot :
Penjelasan : $data equal array , kemudian diisilah awal dan akhir sebagai identifier, terus
dinda dan khrsm sebagai value nya . Kemudian datanya di kirim ke file view aboutme .
Untuk pemanggilan nya sama dengan diatas. Maka tampilannya akan seperti ini :
Done.
artinya : Blade itu mudah, juga template engine yang sangat powerful disediakan bersama laravel.
Tidak seperti controller layout, daaaaaan seterusnya. Intinya Blade itu adalah template engine untuk
laravel. Dan semua file blade harus menggunakan extensi .blade.php.
Oke tanpa panjang lebar lagi mari kita coba latihan templating menggunakan Blade.
B. Penggunaan Blade
1. Masih ingat kan di bab sebelumnya kita sudah membuat satu buah template view bernama
“aboutme.blade.php”. Nah, sekarang silahkan untuk main main aja, buat satu buah file view lagi
copas saja dari aboutme.blade.php :
Juga jangan lupa kita harus membuat method di controller sebagai pemanggil file viewnya , dan
kemudian membuat route yang mengarahkan ke method baru yang kita buat tadi. Kalau bingung
lihat gambar di bawah :
kita buat sebuah method / function di dalam controller LamanController bernama contactme :
Oke, berarti kalau memang sudah bisa, kalian sudah lumayan mahir dalam alur laravel. Mari kita
lanjut ke step berikutnya,
2. Mari kita kenalan sedikit dan bermain dengan fitur blade, alias template engine di laravel. fyi,
umumnya programmer sering kali membuat sebuah template menjadi beberapa bagian untuk
3. Kemudian buka aboutme.blade.php dan hapus bagian <body> ke atas , begitu pula </body> ke
bawah, karena pada dasarnya kita hanya perlu bagian yang ada di dalamnya <body></body>.
Penjelasan:
@extends(‘masterview’) digunakan hampir seperti include file masterview.blade.php kalau di dalam
php biasa.
@section(isi) berfungsi sebagai identifier bahwa section ini lah yang akan disisipkan ke bagian
yield(‘isi’) yang ada di masterview.blade.php
4. Cek , apakah berhasil ?
Namun ada sedikit tambahan, di bagian contactme.blade.php akan kita tambahkan sebuah
footer, yang sebelumnya di aboutme tidak ada.
Buka masterview.blade.php, kemudian tambahkan line code berikut :
Silakan bandingkan, aboutme yang tidak ada footernya dan contactme yang telah kita beri
footer.
A. Konfigurasi Database
Pada bab ini kita akan membahas tentang migration yang ada di laravel, namun sebelumnya
kita sedikit bahas tentang konfigurasi database terlebih dahulu. Langkah pertama, kita akan membuat
database yang bernama “laravel5” di mysql phpmyadmin.
Sebelum melangkah lebih lanjut, kami akan menjelaskan bagaimana cara mengkonfigurasi database
agar bisa terbaca oleh aplikasi laravel kita. Pertama-tama, silakan buka file database.php pada folder
config.
Di dalam file database.php terdapat berbagai macam driver untuk database kalian, sesuai
dengan yang dibutuhkan dalam pengembangan sistem yang akan kalian kerjakan. Untuk saat ini, kita
set saja secara default yaitu “mysql”. Di dalam file ini tidak perlu adanya perubahan bila menggunakan
mysql, tidak perlu mengubah username atau password. Karena file yang perlu diubah adalah file .env
yang berada di luar folder. Kenapa? Karena bila kita menggunakan git, kemudian app laravel di publish,
dan bisa diakses orang banyak, maka file config ini juga akan terbaca maka perlu adanya environment,
yang mana file .env itu tidak akan diambil oleh git, alias di ignore.
B. Migrasi Database
Sebelum ke topik, mari kita bayangkan terlebih dahulu. Bayangkan ketika kita kerja secara
remote yang mana database juga harus sinkron satu developer dengan yang lain. Biasanya satunya
membuat database, lalu diexport, lalu developer yang lain mengimport, lalu bagaimana kalau ada
perubahan ditengah jalan? Apa harus melakukan export import lagi? Hal seperti itu, tidak efektif
bukan? Laravel disini menyediakan sebuah fitur yang namanya migration, sebagai trik agar bisa
sinkron database antar developer dengan langkah yang sangat mudah, yaitu hanya perlu menjalankan
perintah migration. Agar lebih jelasnya, mari kita lakukan percobaan berikut:
• Buka PhpStorm lalu masuk ke folder database, migration. Di dalamnya akan ada 2 file. Silahkan
buka yang create_users_table.php.
• Ada 2 method, yaitu up dan down. Yang pertama adalah up yang akan membuat table users,
“blueprint” kolom dari table “users” akan menjadi id yang autoincrement, name berjenis
• Dengan gambar diatas, berarti kita sudah punya 2 file, yang nantinya akan menjadi tabel user,
dan password resets. Tapi saat kita mengecek di database laravel5, data tersebut belum ada
karena kita belum meng-imigrasikannya. Langkah selanjutnya adalah kita perlu meng-
imigrasikan file tadi ke dalam database dengan cara mengetik php artisan migrate
menggunakan command prompt.
• Setelah itu kita cek langsung di database yang telah kita buat, yaitu laravel5.
• Sekarang kalau saja setelah membuat sebuah tabel, contohnya users, kemudian salah satu
kolom salah tulis nama, mungkin seharusnya “username” malah kita tulis “name”.
• terakhir, jalankan php artisan migrate lagi. Maka setelah menjalankan perintah itu,
sebagai pembuktian silakan lihat pada tabel user, apakah sudah berubah atau belum.
• Setelah selesai, langsung kita review, maka akan kita dapatkan sebuah file baru di dalam folder
migrations.
• Lalu kita buka file tersebut dan di dalamnya sudah diberikan beberapa method yang sudah
terisi. Yaitu id, dan timestamps. Namun, kita perlu menambahkan beberapa kolom lagi untuk
tabel articles kita.
• Untuk membuktikan apakah berhasil atau tidak nya, kita coba buka database lagi lalu coba di
cek apakah table articles sudah berhasil diciptakan atau belum.
B. Penggunaan Eloquent
• Buatlah sebuah model (representasi tabel) baru bernama ”Article”. Dengan perintah php
artisan make:model
• Setelah membuat model baru, kita bisa langsung mengeceknya di sidebar editor atau di folder
laravel, dan ada sebuah file bernama Article.php yang telah kita buat sebelumnya.
Buka file Article.php tersebut. Sebelumnya, yang perlu diketahui adalah class Article ini extend ke
kelas Model, dimana kelas tersebut adalah bawaan dari laravel itu sendiri. Di kelas Model ini banyak
function yang nantinya bisa kita manfaatkan dalam fetching record. Termasuk save untuk simpan
data, find untuk menemukan data, dll.
• Setelah kita sudah mengetahui pembuatan modelnya, kita akan mulai bermain dengan
beberapa fungsi yang ada di eloquent menggunakan php tinker, untuk memperjelas beberapa
• Buat sebuah objek baru bernama $artikel, yang nantinya akan merepresentasikan model
App\Article. Dengan ini kalian bisa memanipulasi tabel database melalui model Article.
• Hal pertama yang akan kita lakukan menggunakan tinker ini adalah mengisi table kita dengan
beberapa record. Di bab sebelumnya, kita telah membuat table articles lalu buka file tersebut.
• Coba cast $artikel ke array dengan perintah seperti dibawah ini, pastikan nilai yang kita telah
masukkan sebelumnya sudah masuk.
• Untuk memastikan data sudah masuk atau belum, langsung saja akses phpmyadmin atau
apapun tool untuk akses ke mysql, masuk ke tabel articles dan lihat apakah datanya berhasil
masuk atau tidak.
• Setelah memastikan data sudah masuk, sekarang kita coba untuk me-“select” menggunakan
php tinker. Dengan format “App\Article::all()” maksudnya adalah fetch semua data yang ada
di tabel tersebut. Terus cast ke array.
Setelah kita melakukan percobaan tersebut, hasil nya Error. Itu karena laravel sebenarnya
melindungi kita dari massAssignment. Apa itu massAssignment? pada dasarnya laravel melindungi
kita dari pengiriman data yang illegal di dalam array besar. Nah disini kita akan berusaha bagaimana
mengatasi error ini . Maka kita perlu menjelaskan ke laravel ada beberapa kolom yang sebenarnya
boleh di “massassginment” dengan cara kita masukkan ke dalam model Article kita.
• Setelah itu kembali ke tinker, jalankan kembali perintah create nya, maka dipastikan telah
masuk.
Setelah kita mengerti beberapa hal dasar dari laravel, sekarang mari kita pelajari alur dari
Model, Controller, dan View. Yaitu controller mengambil data dari model kemudian ditampilkan ke
view. Namun sebelumnya, kita juga harus bermain dengan route. Langsung kita praktekin aja yok !
Kita coba untuk bermain dengan route dahulu, agar kita mengerti bagaimana cara kerja route itu
sendiri. Masukkan script di bawah ke routes.php.
Penjelasan: kita mendaftarkan url ngawur, yang nantinya akan menjalankan fungsi yang
mengeluarkan nilai “ini ngawur”. Untuk route yang normal dia hanya akan mengarahkan ke controller
tertentu, seperti tertulis di atasnya.
Kemudian jalankan di browser kalian,
Nah, sekarang karena kita mau menampilkan data artikel yang telah kita buat sebelumnya, maka kita
perlu controller baru, yang nantinya menghandle seluruh aksi manipulasi terhadap data artikel.
Jalankan perintah berikut dalam cmd.
Tetapi jangan lupa agar bisa diakses kita perlu memberikan route kepada fungsi index yang ada di
ArtikelController ini.
Kemudian akses kembali url http://localhost:8000/artikel, maka akan menghasilkan array berisi data
artikel.
Sekarang permasalahannya adalah bagaimana menampilkan data tersebut ke dalam sebuah view?
Sehingga lebih manusiawi, tidak berbentuk JSON ataupun array mentah? Baik, mari kita kirimkan data
tersebut ke sebuah view bernama index. Berikut contoh skripnya :
Buka masterview.blade.php, yang merupakan master dari tampilan yang akan kita gunakan. Pastikan
code agan sama dengan yang di bawah biar nanti tampilannya sama.
Sekarang buka index.blade.php yang tadi kita buat. ingat, kita akan menyisipkan code yang ada disini,
ke dalam masterview, masih ingat fungsi yield dan section kan? masih dong pasti. Maka index harus
extend dengan masterview.
Nah itu baru kita test saja belum mengakses data dari kontroler sama sekali.
Sekarang, kita akan mengakses data yang telah di pass oleh kontroller ke view, memang agak
berbeda dengan CI atau php manual, karena blade sendiri sudah memiliki format tersendiri
dalam menampilkan data.
Untuk menampilkan salah satu berita saja maka kita membutuhkan sebuah view baru dan sebuah
fungsi baru, yaitu fungsi untuk menampilkan satu saja data dari artikel ketika judul di klik, dan biasanya
akan butuh sebuah “wildcard” atau id tertentu yang akan menjadi parameter penampil artikel. Maka
kita akan buat fungsi “baca” yang akan mengambil id dari artikel yang dilemparkan oleh judul yang
kita klik nantinya.
Untuk mengerti dan memahami cara kerjanya, sekali lagi kita lakukan ujicoba. Kita kembalikan saja
nilai id nya, dan kita lihat nantinya apakah berhasil atau tidak. Silahkan ujicoba dengan browser
dengan memasukan parameter apapun setelah artikel, contohnya :
Oke, karena kita sudah mengerti alur kerja nya, sekarang kita coba untuk memanfaatkan fungsi tadi
untuk menangkap id, namun jelas kita juga perlu menambahkan sebuah query dimana nantinya data
yang akan ditampilkan hanyalah yang memiliki id yang telah dikirimkan via url.
It works ! hehe
Bentar bentar , kita coba deh kirimkan id=3 , yang mana kan artikel kita hanya ada id=1, dan
id=2. Dan wooops !! kok malah menampilkan kosong dan blank ? harusnya error.
Nah coba untuk mengatasi hal diatas, kita berikan sebuah if kondisi di kontroler, seperti contoh
dibawah :
Oke, kita coba yak ! seharusnya muncul eror 404 sehingga kita nanti mudah dalam handling errornya.
Dan bila kita cek lagi di browser , pasti laravel memberikan sebuah error. Maka kita gunakan findOrFail
aja deh ya lebih clean dan simple.
Oke, seperti halnya ketika kita menampilkan all artikel di awal tadi, maka kita butuh sebuah view untuk
handling tampilan dari single page yang nanti kita request dari mengklik judulnya. Namun sebelumnya,
kita return kan dulu di fungsi baca seperti di bawah :
Nb : lihat baris kode terakhir,ada 2 baris, satunya menggunakan ->with, dan satunya compact , hasilnya
sama saja, silahkan pilih salah satu.
Buka file baca tadi, isikan seperti dibawah ini, hampir sama dengan yang awal tadi.
karena sudah berhasil membuat fungsi baca, dan sudah berjalan dengan sempurna, maka kita kembali
ke index.blade.php karena tadi a href nya kita masih bernilai #, maka sekarang kita ganti dengan
melemparkan data id.
Banyak sebenarnya pilihan untuk menuliskan url pada href, gambar di atas adalah cara manual
termudah, ada juga cara lain berikut dilampirkan di bawah :
Sudah sepertiga langkah kita menuju ke benar-benar mengenal laravel 5 . Tetap semangat ya!
Nah sekarang kita akan belajar tentang bagaimana membuat form kemudian datanya akan kita
kirimkan ke controller yang kemudian seperti biasa, dieksekusikan oleh model untuk dikirimkan ke
database. Yoi, ga begitu jauh dengan framework lain, yuk segera kita mulai !
Langsung aja kita buka file route, kita masukkan sebuah route untuk page “tambah” atau create
terserah kalian mau kasih nama apa, yang penting sekarang adalah mengerti basic nya dulu.
Oke, disini kita buat url menggunakan create, dan akan mengarahkan ke fungsi tambah yang ada di
kontroller Artikel.
Dan jelas kita juga harus membuat sebuah fungsi baru bernama tambah di kontroller artikel.
Seperti yang kita tuliskan diatas berarti kita akan perlu sebuah view yang akan menghandle form yang
nantinya akan diisi artikel. Mari kita buat :
Kalau sudah silahkan cek apakah sudah berhasil dipanggil viewnya ? silakan akses langsung di browser.
Kalau sudah berhasil, maka yang selanjutnya kita lakukan adalah membuat form. Sebenarnya bisa saja
kita menuliskan manual form kita, manual berupa html begitulah yang dimaksud, tapi disini kita akan
sekalian belajar bagaimana pull sebuah package dari composer yang nantinya juga kita bisa gunakan
untuk membuat form dengan sangat mudah! Pada laravel 5.2, package yang digunakan dalam
membuat form adalah laravelcollective/html yang nantinya bisa digunakan untuk membuat form dan
html. Langkahnya sebagai berikut:
1. Buka file composer.json, tambahkan laravel collective/html pada require seperti berikut:
"require": {
"laravelcollective/html": "5.2.*"
}
3. Kalau sudah, Buka file app.php yang berada di folder config, daftarkan collective/html seperti
contoh berikut :
Baik sekarang kita coba untuk membuat sebuah form, dengan menggunakan format berikut :
Wooops !!! error, tak ditemukan query ? loh ? berarti create ini malah dikira sebuah parameter yang
dibaca oleh fungsi “baca” tadi dong ya ? jelas hasilnya no query result, karena select * from articles
where id=’create’ tidak ada ! Wah, jelas bagian routing yang salah ini. Kita kan mau create untuk
diarahkan ke fungsi “tambah” bukan malah ke fungsi “baca” . Kita coba dulu, apa benar malah eksekusi
fungsi “baca”.
Namun solusinya sangat mudah, yaitu taruh route yang bawah, yaitu yang tambah, diatas dari Route
yang baca. Seperti dibawah ini :
Baik, setelah kita membuat form dan berhasil tereksekusi dengan benar, maka langsung kita coba deh
main-main membuat field satu aja dulu :
Setelah kita berhasil maka langsung cek di browser, kita lihat tampilannya bagaimana :
Setelah itu kita buat sebuah fungsi baru di ArtikelController bernama “simpan” seperti yang telah kita
tuliskan di route tadi. Contohnya di bawah ini :
Oke, sekarang kita test inputan dan apakah ter fetch secara sempurna semua data yang kita inputkan
? kalau data yang kita inputkan di “return” atau ditampilkan maka kita telah sukses !
Penjelasan : published_at kan belum ada inputan, maka kita akali dengan input dari library carbon
yang menunjukan tanggal dan waktu saat input artikel. Kemudian setelah data berhasil diinputkan,
akan di redirect ke halaman artikel, yang artinya langsung kelihatan hasilnya nanti.
Setelah save, maka kita coba lagi input :
Tapi kok masih ada yang aneh, malah judul yang jadul malah di atas sendiri ? Wah,harus diedit ini.
Buka fungsi index di kontroller artikel :
Penjelasan : dengan fungsi latest, maka seakan akan menjalankan order by published_at desc.
Kali ini kita akan membahas sedikit tentang penanganan tanggal, atau date time, dan juga
penggunaan Query scope. Dua hal ini pastinya akan sangat membantu kita dalam pembuatan aplikasi
yang powerful. Untuk teorinya sih, cari aja di google banyak, sekarang kita langsung aja praktek.
Untuk awalnya kita buka fungsi “simpan” yang ada di kontroler artikel, kita buat agak ringkas biar
enak dipandang menjadi seperti berikut ( dibuat inline ).
2. Nah untuk formulir yang tadinya kita belum buat field published_at, sekarang kita buat, agar
nanti bisa kita buat main-main. Tambahkan line code berikut di view dari tambah artikel tadi.
Penjelasan : kita menggunakan input dengan type data date, dan nilai defaultnya adalah date(‘Y-m-d’)
alias hari ini.
Maka ketika kita akses akan memiliki tampilan seperti berikut :
Kemudian juga kita cek langsung ke database apakah datanya benar masuk, dan bagaimana
bentuknya?
4. Setelah itu mari kita lihat pada view artikelnya, apakah sudah benar atau tidak .
Wupps ! bukannya tadi kita menginputkan artikel ini akan dipublikasi tanggal 31 Maret 2016, ya ? kok
bisa muncul sih? Logikanya, Seharusnya inputan yang tampil adalah artikel yang published_at nya
adalah kurang dari atau sama dengan tanggal sekarang ? iya kan?
5. Nah, untuk menampilkan sesuai dengan logika yang benar maka kita perlu mengubah query
yang ada di fungsi index yang menghandle page artikel, di kontroler milik artikel a.k.a ArtikelController:
6. Tetapi sepertinya terlalu panjang ya untuk ukuran query biasa, dan itu wherenya hanya satu,
kalau nanti banyak bagaimana? Bisakah diperpendek? Jawabnya bisa! Umpama kita mau baris“->
where(‘published_At’,’<=’,Carbon::now())” kita perpendek menjadi “->dipublish()” pendek kan ? maka
caranya adalah seperti berikut:
Kemudian kita buka model kita, Article.php, dan tambahkan sebuah scope query baru dengan format
“scopeNamamethod” kemudian baris code yang tadi kita mau ubah kita pastekan disana seperti
dibawah :
dd() berfungsi untuk menampilkan data pada objek. Kita coba gunakan data created_at yang
merupakan otomatisasi generated oleh laravel. Maka ketika kita akses yang muncul adalah :
Karena berbentuk ‘carbon instance’ maka kita sangat mudah untuk memanipulasinya, contohnya kita
akan menampilkan tahunnya saja :
Atau mungkin keperluan lain, yaitu menambah hari dari hari yang ada :
Atau seperti twitter, yaitu menampilkan seperti “diupdate 7 hari yang lalu” :
8. Kita coba untuk membandingkan dengan timestamp buatan kita yaitu published_at, apakah
juga bisa kita manipulasi seperti timestamp buatan laravel ?
Ternyata keluarannya adalah string, jelas kita tidak bisa manipulasi sesuka hati seperti ketika
bentuknya carbon instance. Maka kita perlu merubahnya menjadi sebuah carbon instance juga.
9. Cara mengubahnya adalah dengan menambahkan sebuah variable $date yang berisi
published_at pada model kita seperti yang dicontohkan berikut :
Setelah berpusing ria dengan pembuatan form, date handling, dan lain sebagainya. Sekarang saat nya
kita bermain dengan form request. Agar data yang dikirim berkualitas, jelas kita harus validasi bukan?
Memang validasi bisa dilakukan secara client scripting, namun itu saja tidak cukup, harus dari server
side scripting juga diberi validasi. Maka mari langsung kita masuk ke pelajaran selanjutnya :
1. Mari kita coba untuk update sebuah artikel tapi kosongan, kita coba apakah bisa ?
Kosongan beneran, berarti belum ada validasi sama sekali. Kita coba cek di database.
2. Seperti yang kita tahu, bahwa kita menggunakan Request::all() untuk memfetch seluruh data
inputan bukan? Nah pilihannya adalah beri validasi di kontroller, dan gunakan
Illuminate\Support\Facades\Request seperti yang kita lakukan sebelumnya.
Setelah itu cek apakah file TambahArtikelRequest sudah ada di folder Requests yang berada di folder
Http.
5. Kembali ke ArtikelController.php kita akan menggunakan file Request yang telah kita buat
tadi:
Kemudian kita gunakan di fungsi “simpan” menggantikan Request yang telah awal kita gunakan tadi.
Yaitu nantinya akan berubah menjadi seperti ini :
Gagal bukan ? karena kita tidak di redirect , berarti kita berhasil membuat validasinya.
7. Mari kita buktikan bahwa ada error yang dilemparkan oleh Request handler yang kita buat
tadi yaitu dengan menambahkan code berikut ke file tambah.blade.php, di atas @stop
Silahkan refresh browser agan, lihat apakah sudah ada tampilan errorbag nya ?
Kita rubah vardump tadi menjadi kode seperti diatas. Yang berfungsi membuat sebuah list error dari
array yang dihasilkan errorbag tadi.
Dan juga jangan lupa kita tes dengan artikel yang sesuai dengan validasi :
https://en.wikipedia.org/wiki/Laravel
https://laravel.com/docs/5.1/installation
http://pondokprogrammer.com/wp-content/uploads/2014/12/tutorial_dasar_laravel.pdf
http://www.tentorweb.web.id/2015/05/
https://laravelcollective.com/docs/5.2/html