Melanjuti tulisan lama saya tentang Laravel. Pada tulisan kali ini saya akan membahas mengenai routing di Laravel v5.2. Di PHP framework, masalah routing adalah hal mutlak yang wajib Anda ketahui. Dan routing ini adalah prinsip yang paling mendasar untuk menghubungkan antara request ke controller
sampai ke model
dan kembali lagi ke si requester.
Sebelum memasuki tahap praktek ada kiranya kita sedikit mengetahui apa itu routing terlebih dahulu. Sesuai bahasa routing memiliki arti rute, yakni rute atau alur untuk menangani berbagai request dari client atau _viewer _seperti GET
, POST
, PUT
, DELETE
. Sederhananya seperti Anda memasuki URL
(laravel-5-2-routing) ini artinya Anda telah me-request (GET
) pada halaman sesuai dari URL
. Atau ketika Anda mengirim komentar pada tulisan ini, itu artinya Anda me-request sebagai POST
.
Bacaan sebelumnya untuk tahap instalasi Laravel:
- Cara Install Laravel 5.1
- Bagi Anda pengguna Ubuntu 16.04 bisa ikuti cara dari video yang telah saya buat sebelumnya.
Perlu diketahui tutorial ini menggunakan Laravel v5.2 sedangkan instalasi di atas menggunakan v5.1 itu tidak menjadi masalah. Caranya sama saja. Ini karena kesalahan saya terlalu lama tidak membahas mengenai Laravel ini hehehe ?.
Implementasi GET
Semua penanganan masalah routing di Laravel terletak pada app/Http/routes.php
lihat gambar di bawah ini.
Kita akan mendapati source:
Route::get('/', function () {
return view('welcome');
});
Itu berarti pada request root
( / ) atau halaman utama, Laravel memanggil view
pada berkas bernama welcome
Anda bisa lihat di resources/views/welcome.blade.php
:
Anda bisa mengganti menjadi seperti ini:
Route::get('/', function () {
echo "Halo Laravel";
});
Maka hasilnya akan seperti gambar di bawah ini:
Anda bisa tambahkan URL /user/nama_Anda
. Dengan cara berikut:
Route::get('user/{name}', function ($name) {
echo "Halo Saya $name";
});
Perhatikan kode di atas, tanda kurung kurawal (bracket) {name}
berarti memberikan nilai pada variabel $name
. Jika Anda ingin membuat variable yang mendapatkan nilai dari requester, Anda harus memberikan nama dalam bracket sesuai dengan nama variable nya.
Implementasi POST
Untuk mengimplementasikan POST
dibutuhkan beberapa teknik khusus. Dimulai dari Laravel versi 5.1 hingga ke atas, semua penangan masalah POST
, PUT
dan DELETE
, harus berada dalam satu grup middleware bernama web
.
Route::group(['middleware' => ['web']], function () {
// taru semua kode route Anda di sini
});
Semua route yang tidak berada dalam grup tersebut tidak akan bisa mengakses session
dan melewati CSRF protection
. Seperti halnya contoh di atas, kita telah mempraktekan GET
di luar grup web
middleware. Karena memang kasusnya sederhana yakni hanya merequest URL user
dan variable nama
.
Studi Kasus
Sekarang kita buat URL halo
yang mana akan menampilkan nama
Anda dengan sebuah textbox
dan tombol submit
. Berikut kodenya:
use Illuminate\Http\Request;
Route::get('/', function () {
echo "Halo Laravel";
});
Route::get('/user/{name}', function ($name) {
echo "Halo Saya $name";
});
Route::group(['middleware' => ['web']], function () {
Route::post('halo', function (Request $request) {
echo "Halo.. perkenalkan, nama saya {$request->nama}";
});
Route::get('halo', function () {
echo '<form method="POST" action="halo" accept-charset="UTF-8">';
echo '<input type="hidden" name="_token" value="'.csrf_token().'">';
echo '<input type="text" name="nama"><br/>';
echo '<input type="submit"></form>';
});
});
Perhatikan baris pertama use Illuminate\Http\Request;
ini wajib Anda gunakan jika Anda ingin mengambil hasil request dari items POST
. Perhatikan kode pada baris ke-13 dan ke-14, saya mengambil request dari textbox
bernama nama
. Perhatikan juga kode pada baris ke-19 yakni:
echo '<input type="hidden" name="_token" value="'.csrf_token().'">';
Wajib ditulis, jika tidak, Anda tidak akan bisa melewati CSRF Protection
. Ada tiga cara penulisannya yakni:
{% raw %}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
// atau
<input type="hidden" name="_token" value="{!! csrf_token() !!}">
// atau
<input type="hidden" name="_token" value="<?php echo csrf_token() ?>">
{% endraw %}
Hasilnya akan seperti berikut:
Implementasi PUT dan DELETE
Sengaja saya jadikan satu sub judul karena keduanya pada dasarnya hanya penggunaan metode POST
yang ditambahkan sedikit kriteria dalam hal ini PUT
dan DELETE
. Untuk lebih jelasnya perhatikan kode di bawah ini:
Route::group(['middleware' => ['web']], function () {
Route::put('coba', function (){
echo 'PUT';
});
Route::delete('coba', function (){
echo 'DELETE';
});
Route::get('coba', function(){
echo '<form method="POST" action="coba" accept-charset="UTF-8">';
echo '<input type="hidden" name="_token" value="'.csrf_token().'">';
echo '<input type="hidden" name="_method" value="PUT">';
echo '<input type="submit"></form>';
});
});
Perhatikan pada kode baris ke-14 lihat name="_method"
dan value="PUT"
. Ini artinya Anda memanggil atau me-request PUT
. Jika Anda ingin memanggil DELETE
tinggal diganti saja value nya menjadi value="DELETE"
.
Untuk lebih jelasnya lihat video di bawah ini:
Semoga bermanfaat.
Komentar