Routing Dasar

Mendefinisikan route, parameter, nama route, route view/redirect/fallback, dan batasan parameter.

Part 3 dari 26 ± 40 menit Gratis

Route: pintu masuk aplikasi

Route menghubungkan URL + metode HTTP dengan kode yang menanganinya. Semua route web didefinisikan di routes/web.php.

<?php

use Illuminate\Support\Facades\Route;

Route::get('/halo', function () {
    return 'Halo, Laravel 13!';
});

Mengunjungi /halo menampilkan teks itu. Kamu bisa mengembalikan string, array (otomatis JSON), objek model, response, atau view.

Metode HTTP

Route::get($uri, $handler);       // membaca
Route::post($uri, $handler);      // membuat
Route::put($uri, $handler);       // mengganti
Route::patch($uri, $handler);     // mengubah sebagian
Route::delete($uri, $handler);    // menghapus
Route::match(['get', 'post'], '/kontak', $handler);
Route::any('/webhook', $handler);

Form HTML hanya mengenal GET dan POST. Untuk PUT/PATCH/DELETE, Blade memakai @method('PUT') yang menambah field tersembunyi _method.

Parameter route

Route::get('/salam/{nama}', function (string $nama) {
    return "Halo, {$nama}!";
});

Route::get('/komentar/{id?}', function (?int $id = null) { /* opsional */ });

Nilai di {...} otomatis disuntikkan ke parameter fungsi (berdasarkan urutan, nama variabel tidak harus sama dengan nama parameter di URL). Parameter diakhiri ? bersifat opsional dan wajib punya nilai bawaan.

Membatasi parameter

Route::get('/artikel/{id}', fn (int $id) => "Artikel #{$id}")->whereNumber('id');
Route::get('/kategori/{slug}', $handler)->whereAlpha('slug');
Route::get('/kode/{kode}', $handler)->where('kode', '[A-Z]{3}[0-9]+');

Jika URL tidak cocok dengan batasan, route dilewati dan Laravel mencoba route berikutnya (akhirnya 404).

Route bernama

Route::get('/salam/{nama}', fn (string $nama) => "Halo, {$nama}!")->name('salam');

route('salam', ['nama' => 'Dina']);     // "http://localhost/salam/Dina"
return redirect()->route('salam', ['nama' => 'Dina']);

Selalu pakai nama route untuk membuat URL: kalau path berubah, cukup ubah di satu tempat.

Pintasan

Route::view('/tentang', 'tentang');                       // langsung menampilkan view
Route::view('/bantuan', 'bantuan', ['versi' => '1.0']);   // dengan data
Route::redirect('/beranda', '/', 301);                    // pengalihan permanen
Route::fallback(function () {                             // route "jatuh" bila tak ada yang cocok
    return response('Halaman tidak ditemukan', 404);
});

Melihat semua route

php artisan route:list
php artisan route:list --path=salam

Urutan dan konflik

Laravel mencocokkan dari atas ke bawah. Letakkan route spesifik (/artikel/baru) sebelum yang berparameter (/artikel/{id}).

Cache route (produksi)

php artisan route:cache mempercepat pemuatan route di produksi. Catatan: route berbasis closure bisa di-cache pada versi modern, tetapi controller lebih rapi untuk aplikasi nyata (bab berikutnya).

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X