Tanggal :3 Desember 2020
Memahami Routing Laravel

Belajar Laravel : Memahami Routing Laravel

Artikel ini bagian ke 2 dari 6 seri dalam artikel berseri "Belajar Laravel"

Assalamualaikum Warohmatulloh Wabarokatuh, bagaimana menurut kawan-kawan artikel sebelumnya tentang Migration?. Suka formatnya yang panjang tapi dapet pemahamannya?. Kali ini kita akan memahami Routing Laravel dengan konsep yang sama kita bahas agak panjang.

Penjelasan Routing

Salah satu hal yang perlu dipahami dalam belajar Laravel adalah tentang Routing. Sesuai namanya Routing atau dalam Bahasa Indonesia artinya rute, fungsinya adalah untuk menunjukkan rute dari aplikasi kita. Gak kebayang ya? sama wkwkw.

Saya coba buat sedikit ilustrasi,walaupun mungkin kurang tepat ilustrasinya, semoga bisa dipahami. Kalau ada yang bisa kasih ilustrasi lebih baik mohon dibantu ya.

Memahami Routing Laravel

Pada ilustrasi di atas, ibaratkan saya sedang mencari sebuah alamat di sebuah perumahan yang saya tidak tahu. Maka prosesnya akan seperti ini, saya ke pos satpam -> saya menanyakan alamat -> pos satpam menunjukkan alamat. Jika ada maka saya diberi petunjuk alamat yang saya cari, jika tidak akan dibilang alamatnya tidak ada di perumahan tersebut.

Sekarang, kita umpamakan dalam kenyataan. Saya adalah user yang sedang menuju sebuah alamat website misalnya https://kawankoding.id/topik/laravel. Tugas routes (Pos Satpam) mengarahkan kita ke alamat yang kita cari, sebenarnya route lebih dari hanya mengarahkan tapi memetakan setiap URI itu akan menggunakan fungsi yang mana. Jika pada route tidak ditemukan alamatnya kita akan melihat halaman error 404 atau artinya halaman tersebut tidak ditemukan.

Gimana? memang bukan perumpamaan / ilustrasi yang paling pas, tapi semoga bisa dipahami oleh kawan-kawan.

Dasar Dasar Routing

Kita masuk ke bagian teknis, sejak versi 5.2 semua file routes di Laravel sekarang berada pada satu folder routes. Untuk kebutuhan aplikasi web kita tempatkan routing di file web.php. Untuk kebutuhan pembuatan API kita dapat gunakan file api.php.

Route Default

Umumnya kita akan mendefinisikan route pada file web.php dan kita bisa mengaksesnya di browser sesuai URL yang kita definisikan. Sebagai contoh kita bisa mengakses route di bawah ini dengan mengtikkan https://kawankoding.id/users pada web browser.

Route::get('/users', 'UserController@index');

Sedangkan untuk route yang kita definisikan di file api.php akan otomatis ditambahkan prefix /api. Jika ingin mengubah prefix bisa modifikasi file app/Providers/RouteServiceProvider.php.

Metode yang Tersedia

Route di Laravel memungkinkan kita untuk merespon semua HTTP verb.

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

Ada waktu dimana kita butuh untuk mendaftarkan beberapa HTTP verbs dalam satu route. Kita bisa gunakan method match atau any.

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('/', function () {
    //
});

Proteksi CSRF

File HTML apa saja yang memiliki form yang berkaitan dengan method POST, PUT, PATCH, DELETE yang didefinisikan di route web.php maka harus menyertakan field token CSRF. Jika tidak maka request akan ditolak.

<form method="POST" action="/userswo">
    @csrf
    ...
</form>

Parameter pada Route

Parameter Wajib

Ada satu kondisi dimana kita butuh mengambil data ID dari users dari URL. Kita bisa menggunakan parameter pada route.

Route::get('users/{id}', function ($id) {
    return 'User '.$id;
});

Kita juga bisa mendefinisikan beberapa parameter sesuai kebutuhan.

Route::get('users/{user}/posts/{post}', function ($userId, $postID) {
    //
});

Penulisan parameter pada route harus berada di dalam { } dan harus berisi karakater alpabet.

Parameter Opsional

Mungkin saja kita butuh paramter yang dimana keadaannya hanya dibutuhkan di saat tertentu saja. Maksudnya parameter ini bisa diisi atau tidak. Bukan maksudnya keaadaanya seperti kawan-kawan yang hanya dianggap ada ketika dibutuhkan saja :p wkwk. Untuk membuat paramter menjadi opsional kita bisa tambahkan tanda ? setelah nama parameter. Kemudian pastikan memberikan nilai default pada variabel pada route tersebut.

Route::get('users/{name?}', function ($name = null) {
    return $name;
});

Route::get('users/{name?}', function ($name = 'Demit') {
    return $name;
});

Penamaan Route

Penamaan pada route membuat kemudahan dalam menggenerate URL atau redirect ke suatu route. Untuk memberikan nama pada route kita bisa tambahkan method name pada route yang didefinisikan.

Route::get('users/profile', function () {
    //
})->name('profile');

atau bisa juga untuk route dengan controller.

Route::get('users/profile', 'UserProfileController@show')->name('profile');

Generate URL dari Nama Route

Ketika kita sudah memberikan nama pada route. Kita bisa menggunakan nama route untuk menggerenate URL atau redirect menggunakan helper route.

// Menggenerate URL...
$url = route('profile');

// Menggenerate redirect
return redirect()->route('profile');

Jika route dengan nama tersebut membutuhkan paramater. Kita bisa mengirimkannya pada argumen kedua dari fungsi route.

Route::get('user/{id}/profile', function ($id) {
    //
})->name('profile');

$url = route('profile', ['id' => 1]);

Jika kita mengirimkan argumen berbentuk array untuk parameternya, secara otomatis akan sesuai dengan key dan value.

Route::get('users/{id}/profile', function ($id) {
    //
})->name('profile');

$url = route('profile', ['id' => 1, 'photos' => 'yes']);

Demikian penjelasan tentang routing. Masih ada beberapa bagian yang harusnya diambahkan, nanti akan diupdate. Semoga bisa membantu kawan-kawan memahami routing Laravel.

Wassalamualaikum Warohmatulloh Wabarokatuh.

Halo semuanya, saya Amirul seoarang Web Developer, suka membuat konten pembelajaran berupa artikel, video tutorial maupun podcast, saya juga suka makan dan foto makanan.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *