Belajar Routing di Laravel: Route, Parameter, dan Named Route

Halo apa kabarnya nih? semoga baik-baik dan pada sehat yah. Kali ini mari kita lanjutkan pembahasan tentang Laravelnya yah.

Waktu pertama kali ngoprek Laravel, biasanya yang bikin bingung bukan hal yang rumit, tapi justru hal paling dasar, yaitu gimana caranya membuka halaman tertentu seperti HOME atau mungkin ABOUT ME.

Nah, yang ngatur itu namanya routing. Anggap saja routing itu seperti resepsionis di kantor. Ada tamu datang minta ketemu bagian keuangan, resepsionis yang nunjukin jalannya.

Di Laravel, kerjaan “nunjukin jalan” ini semuanya ditulis di satu file: routes/web.php. Pembahasan kali ini, kita bahas tiga hal yang wajib kamu kuasai duluan:

  • Route dasar (bikin URL dan nentuin apa yang muncul)
  • Route dengan parameter (URL yang isinya bisa berubah-ubah)
  • Named route (ngasih nama ke route biar gampang dipanggil)

Jadi tunggu apa lagi? check this out!

Route Paling Dasar

Buka file routes/web.php. Isinya kira-kira begini pas project masih baru:

<?php
use Illuminate\Support\Facades\Route;
Route::get(&apos;/&apos;, function () {
    return view(&apos;welcome&apos;);
});

Baris Route::get(&apos;/&apos;, ...) itu artinya: “kalau ada orang buka halaman utama (/), tampilkan view bernama welcome.”

Sekarang kita coba bikin route sendiri. Misalnya kita mau bikin halaman /tentang yang cuma nampilin tulisan biasa:

Route::get(&apos;/tentang&apos;, function () {
    return &apos;Halo, ini halaman Tentang Kami&apos;;
});

Simpan, terus buka http://localhost:8000/tentang di browser. Tulisannya bakal langsung muncul dan segampang itu.

Oh iya, Route::get di sini maksudnya route ini nanggepin request tipe GET, alias request biasa waktu orang buka halaman lewat browser.

Nanti kalau kamu udah bikin form, kamu bakal ketemu Route::post juga. Tapi untuk sekarang, GET dulu aja.

Mengarahkan Route ke Controller

Nulis logika langsung di dalam route kayak di atas boleh-boleh aja buat coba-coba. Tapi kalau aplikasinya udah mulai besar, ini bakal berantakan. Jadi biasanya kita lempar ke Controller.

use App\Http\Controllers\HalamanController;
Route::get(&apos;/tentang&apos;, [HalamanController::class, &apos;tentang&apos;]);

Artinya: kalau ada yang buka /tentang, panggil method tentang() di dalam HalamanController. Isi controllernya kira-kira begini:

class HalamanController extends Controller
{
    public function tentang()
    {
        return view(&apos;tentang&apos;);
    }
}

Jadi route cuma ngurusin “pintunya”, urusan isi diserahin ke controller agar lebih rapi.

Route dengan Parameter

Nah ini yang seru, coba bayangin kamu lagi bikin blog. Kamu punya banyak artikel, dan tiap artikel punya alamat sendiri:

/artikel/1
/artikel/2
/artikel/57

Masa iya kamu nulis route satu-satu buat tiap artikel? ya tidak mungkin. Di sinilah parameter kepake.

Route::get(&apos;/artikel/{id}&apos;, function ($id) {
    return &apos;Kamu lagi baca artikel nomor &apos; . $id;
});

Bagian {id} itu tempat kosong yang isinya bisa apa aja. Satu route, dipake buat semua artikel. Nama di dalam kurung kurawal {id} harus sama dengan nama variabel di fungsinya ($id). Kalau beda, Laravel bakal bingung.

Contohnya Bagaimana?

Misal kamu punya data user, terus mau nampilin profil berdasarkan username:

Route::get(&apos;/user/{username}&apos;, function ($username) {
    return &apos;Ini profil milik &apos; . $username;
});

Buka /user/budi, muncul “Ini profil milik budi”. Buka /user/siti, muncul “Ini profil milik siti”. Nah kan jadi lebih fleksibel.

Parameter yang Boleh Kosong

Kadang kamu mau parameternya opsional, boleh diisi boleh tidak. Tambahin tanda tanya (?) di belakang nama parameter, terus kasih nilai default di fungsinya:

Route::get(&apos;/kategori/{nama?}&apos;, function ($nama = &apos;semua&apos;) {
    return &apos;Kamu lihat kategori: &apos; . $nama;
});

Sekarang dua-duanya jalan:

  • Buka /kategori/olahraga -> muncul “Kamu lihat kategori: olahraga”
  • Buka /kategori doang -> muncul “Kamu lihat kategori: semua”

Nilai &apos;semua&apos; tadi jadi cadangan kalau parameternya tidak diisi.

Batasan Isi Parameter

Ada kalanya kamu cuma mau nerima angka doang. Misal ID artikel harusnya angka, bukan huruf. Kamu bisa kasih aturan pakai where:

Route::get(&apos;/artikel/{id}&apos;, function ($id) {
    return &apos;Artikel nomor &apos; . $id;
})->where(&apos;id&apos;, &apos;[0-9]+&apos;);

Dengan begini, /artikel/12 bakal jalan, tapi /artikel/abc bakal dianggap nggak ada (404). Lumayan buat jaga-jaga biar nggak ada input aneh masuk.

Kasih Nama Pada Route: Named route

Bagian ini sering dilewatin sama pemula, padahal manfaatnya besar banget. Coba bayangin situasi ini. Kamu punya route ke halaman kontak:

Route::get(&apos;/hubungi-kami&apos;, function () {
    return view(&apos;kontak&apos;);
});

Terus di banyak halaman lain, kamu nulis link ke sini:

<a href="/hubungi-kami">Hubungi Kami</a>

Misal ada di 20 halaman. Suatu hari bos kamu minta URL-nya diganti dari /hubungi-kami jadi /kontak. Kalau kamu hardcode kayak gitu, kamu harus edit 20 tempat satu-satu. Itu menjadi repot dan bisa salah.

Named route ngatasin masalah ini. Kita kasih nama ke route-nya:

Route::get(&apos;/hubungi-kami&apos;, function () {
    return view(&apos;kontak&apos;);
})->name(&apos;kontak&apos;);

Sekarang di link, kita panggil pake namanya, bukan URL-nya langsung:

<a href="{{ route(&apos;kontak&apos;) }}">Hubungi Kami</a>

Fungsi route(&apos;kontak&apos;) otomatis menerjemahkan URL yang benar. Jadi kalau suatu saat URL-nya berubah jadi /kontak, kamu cukup ganti di satu tempat aja, di file route.

Semua link yang pake route(&apos;kontak&apos;) bakal ngikut sendiri. Hemat waktu dan minim salah.

Named Route Buat Route yang Ada Parameternya

Kalau route-nya punya parameter, tinggal kirim nilainya lewat array:

Route::get(&apos;/artikel/{id}&apos;, function ($id) {
    return &apos;Artikel nomor &apos; . $id;
})->name(&apos;artikel.detail&apos;);

Cara manggilnya:

<a href="{{ route(&apos;artikel.detail&apos;, [&apos;id&apos; => 5]) }}">Baca Artikel</a>

Ini bakal menghasilkan link ke /artikel/5. Kalau ganti angkanya jadi 10, ya jadi /artikel/10. Soal penamaan, banyak yang suka pakai titik buat ngelompokin, kayak artikel.detail, artikel.buat, user.profil.

Itu cuma gaya penulisan biar rapi dan gampang dikenali, bukan aturan wajib. Tapi kebiasaan bagus, kamu bisa coba.

Cek Semua Route yang Kamu Punya

Kalau route udah mulai banyak dan kamu lupa udah bikin apa aja, ada perintah praktis:

php artisan route:list

Ini bakal nampilin daftar semua route: URL-nya apa, methodnya apa, namanya apa, diarahin ke mana. Berguna banget waktu debugging atau pas meneruskan project orang lain.

Kesimpulan

Biar kebayang gimana ketiganya kepake bareng, ini contoh kecil aplikasi blog. Taruh di routes/web.php:

<?php
use Illuminate\Support\Facades\Route;
// Halaman depan
Route::get(&apos;/&apos;, function () {
    return &apos;Selamat datang di blog abang&apos;;
})->name(&apos;beranda&apos;);
// Daftar artikel, kategori opsional
Route::get(&apos;/artikel/{kategori?}&apos;, function ($kategori = &apos;semua&apos;) {
    return &apos;Menampilkan artikel kategori: &apos; . $kategori;
})->name(&apos;artikel.index&apos;);
// Detail satu artikel, ID harus angka
Route::get(&apos;/artikel/detail/{id}&apos;, function ($id) {
    return &apos;Membaca artikel dengan ID: &apos; . $id;
})->where(&apos;id&apos;, &apos;[0-9]+&apos;)->name(&apos;artikel.detail&apos;);

Coba buka satu-satu di browser:

  • / -> halaman depan
  • /artikel -> semua artikel
  • /artikel/teknologi -> artikel kategori teknologi
  • /artikel/detail/3 -> baca artikel ID 3
  • /artikel/detail/abc -> 404, karena ID harus angka

Kalau semuanya jalan sesuai perkiraan, berarti kamu udah paham dasarnya.

Routing itu fondasi. Sebelum ngomongin database, autentikasi, atau hal-hal canggih lainnya, kamu perlu paham dulu gimana request masuk dan diarahin ke mana. Tiga hal tadi udah cukup buat modal awal:

  • Route dasar buat bikin halaman
  • Parameter biar satu route bisa nanggepin banyak kemungkinan
  • Named route biar aplikasi kamu gampang dirawat pas udah gede

Saran abang, jangan cuma dibaca. Buka project Laravel kamu, ketik ulang contoh-contoh di atas, ubah-ubah sedikit, lihat apa yang terjadi.

Bikin route ngaco biar muncul error juga tidak apa-apa, malah dari situ kamu jadi ngerti. Selamat ngoprek.

Leave a Reply

Your email address will not be published. Required fields are marked *