Ini merupakan lanjutan dari panduan sebelumnya, apabila Anda belum membacanya silahkan kunjungi Bagian 1…
Dari hasil percobaan sebelumnya, kita telah memiliki :
- Database, menggunakan SQLITE
- Tabel, berkat migrations
- Pengguna, berkat seeding
Ketiga poin diatas sebenarnya sudah cukup untuk kita sebagai bahan dasar membangun sebuah sistem. Ada beberapa hal lagi yang kita butuhkan untuk merealisasikannya, mereka adalah models, routes, controllers dan views.
Models
Models pada laravel sebenarnya memiliki banyak fungsi, bahkan bisa bertindak sebagai “wadah logika program”. Namun pada panduan kali ini, saya hanya akan menjadikan models sebagai sarana meng-koneksikan aplikasi dengan database. Karena peran sebenarnya memang itu.
Perhatikan file User.php
pada direktori app/models
di baris 13. Terdapat baris syntax protected $table = 'users';
yang maksudnya aplikasi Anda sejak awal telah memiliki Model bernama User
yang berisi seluruh isi tabel bernama users
.
Untuk diketahui bahwa pada tahap pembuatan “database” sebelumnya, kita memang telah membuat sebuah tabel, tetapi tabel yang kita buat bukan bernama users
melainkan pengguna
. Jadi, Anda harus mengubah users
menjadi pengguna
. Sudah tau maksudnya kan? Nama tabel vroh, nama tabel XD
Tips : Biasanya kalau saya pribadi, pembuatan model disini menyesuaikan banyaknya tabel yang saya punya pada aplikasi yang sedang saya bangun. Jadi, setiap model memiliki fungsi menangani isi satu tabel. Misal, dalam database saya memiliki tabel pengguna, artikel dan kategori, maka dalam models saya buat 3 file juga, Pengguna.php
, Artikel.php
dan Kategori.php
. Kurang lebih seperti itu.
*Update bagi pengguna Laravel versi terbaru (4.1.26 keatas), tambahkan 3 fungsi berikut dalam file User.php
.
Routes
Secara garis besar, Route disini bertujuan untuk menangani peng-ALAMATAN atau URL website kita. Sekarang saatnya kita berkhayal. Kira-kira ada berapa halaman yang akan kita gunakan untuk aplikasi kita.
Routes di laravel bernama routes.php
berada di proyek-laravel/app/routes.php
.
Untuk aplikasi autentikasi ini kita hanya butuh :
- Halaman Home (localhost:8000/)
- Halaman Login (localhost:8000/login)
- Halaman Beranda yang akan diakses setelah pengguna login (localhost:8000/beranda)
- Halaman Logout
Jadi, bisa disiapkan 4 route untuk menuju ke halaman tersebut seperti berikut :
Sekarang kalian bisa coba akses keempat link terlebih dahulu melalui browser. Untuk route ketiga (localhost:8000/beranda) dan keempat (localhost:8000/user/logout) kita akan secara langsung di lempar ke halaman localhost:8000/login
, kenapa? Karena terdapat filter
didalamnya, yaitu 'before' => 'auth'
yang artinya halaman itu hanya bisa diakses oleh member atau pengguna yang telah melalui proses login.
Semoga kalian dapat gambaran tentang fungsi route walaupun cuma sedikit disini.
- Bila sudah, sekarang kita fokus ke Route pertama, ubah jadi seperti berikut :
Terdapat perubahan function() menjadi array disini, dan perhatikan sekarang kita memiliki 2 nilai dalam route :
####1. as bernilai index
as disini berfungsi sebagai identitas si route
itu sendiri. Sedikit bocoran, biasanya identitas ini digunakan pada sesi Views dengan cara route('index')
atau URL::route('index')
atau pada sesi Controllerdengan cara return Redirect::route('index');
. Tenang, nanti kalian akan paham sendiri kok. XD
####2. uses bernilai AuthController@getIndex
Anda menggunakan uses berarti Anda menerima untuk menyerahkan tugas dari route kepada Controllers. Sesuai arti uses artinya menggunakan. Jadi bahasa gampangnya begini, Route ini memerintahkan Controller bernama AuthController dengan method bernama getIndex untuk selanjutnya menjalankan tugasnya.
- Untuk route kedua, ubah jadi seperti berikut :
Sama seperti sebelumnya, sekarang route ini memiliki 2 nilai, identitas dan pewaris. XD
- Route ketiga, ubah jadi seperti berikut :
- Dan untuk route terakhir, ubah jadi seperti berikut :
Masih tetap di route
. Sekarang coba pikir, kita kemanakan inputan kita saat login?. Untuk itu, berarti kita membutuhkan 1 buah route POST untuk menangani inputan tersebut yang berupa username
dan password
.
Jadi, yang harus Anda lakukan sekarang adalah menambahkan 1 buah route dengan HTTPRequest POST seperti berikut :
OKE, sekarang urusan si route sudah selesai dan semua tanggung jawabnya telah dilimpahkan ke Controller.
Controllers
Controllers disini akan kita gunakan sebagai wadah kita mengelola semua logika program. Dari beberapa hal yang telah kita lakukan sebelumnya, dapat kita simpulkan bahwa saat ini kita harus memiliki sebuah Controller bernama AuthController
bila disesuaikan dengan apa yang kita tulis didalam route
program. Dan bila kita kumpulkan hasilnya adalah seperti berikut :
- 1 Controller =
AuthController
- 5 Method =
getIndex
,getMasuk
,postMasuk
,getAdmin
,getKeluar
Sekarang buat file baru dalam proyek-laravel/app/controllers/*
lalu beri nama AuthController.php
. Dan isikan syntax berikut :
Sekarang coba akses masing-masing URL melalui browser kalian. Dan hasilnya kurang lebih sama dengan pada saat kita insialisasikan fungsi return
melalui route
sebelumnya.
####Untuk getIndex()
Disini kita akan menampilkan halaman yang memiliki tombol ‘Login’ didalamnya. Sekarang buat jadi seperti berikut :
Sekarang kita memiliki View::make('index');
. Apakah gerangan?. Secara kasat mata, View disini berarti tampilan, bisa dikatakan segala hal yang berbau tampilan dilakukan dalam view. Untuk letak, View ini terletak di proyek-laravel/app/views/*
. make('index');
artinya merujuk kearah file bernama index.php
atau index.blade.php
yang terletak persis didalam direktori proyek-laravel/app/views/
.
####Untuk getMasuk()
getMasuk akan menampilkan halaman atau form login seperti pada umumnya. Coba perhatikan method getMasuk dan ubah menjadi seperti berikut
Sama seperti tadi, dari sini pihak controller menunjuk view sebagai pewaris tugas dengan nama login.php
atau ‘login.blade.php’ dalam folder proyek-laravel/app/views/
.
####Untuk getAdmin()
getAdmin() akan menampilkan sebuah halaman yang hanya bisa dimasuki atau diakses ketika pengguna telah melakukan proses login. Bisa dibilang ini merupakan halaman terlarang bagi pengunjung biasa. Coba ubah menjadi seperti berikut :
Sekarang fungsi getAdmin() disini diserahkan ke Views dengan ketentuan file yang dimaksud bernama index.php
atau index.blade.php
yang berada dalam folder admin
didalam direktori views
. Tanda .
sebagai pemisah antara nama file dengan direktori didepannya. Jadi akan ada folder baru kita ciptakan dalam views
.
Mudahnya direktorinya jadi seperti ini : proyek-laravel/app/views/admin/index.blade.php
.
####Untuk getKeluar()
Jadi ketika getKeluar() ini dikunjungi, dia akan menghapus session dan cookie pengguna yang membuat pengguna keluar dari sistem. Lalu menampilkan view index.blade.php
dengan session bernama ‘pesan’ untuk ditampilkan di index
sesaat setelah melakukan logout
.
####Untuk postMasuk()
Untuk POST sengaja saya buat belakangan karena bagian ini akan menampung baris yang lebih banyak dari sebelumnya. Kalau dulu saya pribadi sih biasanya saya buat dulu alur programnya, jadi istilahnya kita ngomong ke postMasuk() ini dengan menggunakan bahasa kita lewat komentar seperti berikut :
Bagi yang belum terbiasa saya sarankan gunakan cara ini (gak harus sih XD). Tapikan apa salahnya. Ngahahahaha….
Baca dulu baik-baik tiap komentar, bila menurut kalian semua masuk akal, baru yuk kita lanjut.
Sekarang isi menjadi seperti berikut :
Perhatikan baik-baik tiap baris dan komentar-komentarnya. Kalau ada yang mau ditanya, tanya dibawah ya.
Dan dengan ini, tugas si Controllers berakhir, sebelumnya juga route sudah memenuhi kewajibannya dan saatnya sekarang kita beralih ke Views.
Views
Sebelumnya saya sempat beberapa kali menyinggung masalah view dan akan saya tekankan sekali lagi disini, tujuan utama si Views disini adalah untuk menampilkan halaman. Pemegang tugas akhir laravel yang menampilkannya kedalam bentuk visual untuk penggunanya.
Bila kita memeriksa ulang Controller kita, maka akan terkumpul 3 buah view yang harus kita buat, dan mereka adalah :
- index
- login
- admin/index
Sekarang masuk ke direktori proyek-laravel/app/views/
dan buat semua view yang dibutuhkan, kurang lebih seperti gambar berikut :
Mumpung masih disini saya juga akan mengenalkan kalian dengan fitur blade milik laravel untuk keperluan templating.
Sekarang tambahkan 1 buat view lagi bernama utama.blade.php
lalu letakkan dalam folder _tema
di direktori Views. Ya, kurang lebih Views kalian jadi seperti ini :
Artinya sekarang kita memiliki 4 buah view :
- _tema/utama.blade.php
- admin/index.blade.php
- index.blade.php
- login.blade.php
####Untuk _tema/utama.blade.php
Akan dijadikan fondasi dasar kerangka website Anda. Tenang aja, nanti kalian bakalan paham sendiri kok.
Sekarang isi seperti berikut :
Seperti yang kalian lihat, Yap, mereka adalah sekumpulan syntax HTML. Tapi bila diperhatikan ada yang unik didalamnya.
Secara kasat mata, kita tidak akan menyadari bila didalamnya terdapat syntax PHP yang biasanya dibuka dengan <?php
dan ditutup dengan ?>
.
Yang ingin saya katakan disini adalah ini merupakan kemampuan dari si blade
milik laravel. Bila kita kumpulkan hal-hal unik tersebut maka jadi seperti berikut :
@if(...) ... @endif
intinya disini berbicara masalahkondisional if...else...
.{{ ... }}
bernilai sama dengan<?php ... ?>
@yield
akan dijadikan tempat menampung isi dari view-view lain.
Catatan : Perhatikan baik-baik. Ketiga hal aneh tersebut tidak akan bisa terbaca oleh laravel tanpa ada .blade. Intinya terletak pada penamaan file View. index.php
tidak akan mengenalinya, sedangkan index.blade.php
lah yang bisa. Itulah salah satu alasan kita membutuhkan .blade
dibelakangnya.
####Untuk admin/index.blade.php
Merupakan Halaman yang akan diakses ketika pengguna telah melakukan login, isi seperti berikut :
Penjelasan ada dimasing-masing komentar. Dibaca baik-baik yak, sampe paham baru dilanjut.
####Untuk index.blade.php
Didalamnya hanya akan terdapat tombol login yang akan mengarah kehalaman login, jadi isi seperti berikut :
####Untuk login.blade.php
Halaman ini akan menampilkan form yang akan kita inputan, isi script berikut :
Dan terakhir, coba eksekusi program dengan php artisan serve
melalui terminal, yang berarti Autentikasi Sederhana kita SELESAI.
##Kesimpulan
Ya, sebenarnya tutorial ini dikhususkan buat mereka yang betul-betul buta tentang laravel pada khususnya (pemprograman PHP pada umumnya), tetapi memiliki hasrat juang untuk berkenalan dengan si ‘laravel’ itu tadi.
Oleh karenanya sangat wajar bila programmer yang ngakunya pro bilang kalau tulisan ini terlalu lebay, ngahaha… Intinya pesan dari saya tersampaikan dengan baik. Dan mereka bisa memahami fungsi dari beberapa yang dijelaskan diatas.
Ingat, semua programmer memiliki ciri khas mereka masing-masing, jadi wajar bila tata penulisan syntax atau bahkan urutan dalam pembuatannya berbeda antara satu dengan lainnya. Dan ini mengingatkan saya tentang semboyan Bhineka Tunggal Ika XD. Meski memiliki cara dan urutan yang berbeda-beda, namun memiliki satu tujuan jua. Ngahahaha…
Bilamana kiranya ada yang mau ditanyakan, langsung curahkan semuanya dikomentar vroh.
Akhir kata, Happy Coding dan Salam Olahraga. Wassalam.
##Proyek Jadi di GITHUB