Tutorial Laravel #4: Routing Dasar di Laravel
1. Apa itu Routing?
Routing adalah proses menentukan apa yang terjadi ketika user mengakses URL tertentu. Di Laravel, semua route didefinisikan di folder routes/ - tidak ada lagi cek $_SERVER["REQUEST_URI"] seperti PHP native.
2. Route Dasar
Buka file routes/web.php:
use IlluminateSupportFacadesRoute;
// Route GET paling sederhana - mengembalikan string
Route::get('/', function () {
return 'Halo, ini halaman utama!';
});
// Mengembalikan view
Route::get('/tentang', function () {
return view('tentang');
});
// Mengembalikan JSON
Route::get('/api/info', function () {
return response()->json(['app' => 'Laravel', 'versi' => '11']);
});
3. HTTP Methods
Laravel mendukung semua HTTP method:
Route::get('/artikel', function () { /* tampilkan daftar */ });
Route::post('/artikel', function () { /* simpan baru */ });
Route::put('/artikel/{id}', function ($id) { /* update penuh */ });
Route::patch('/artikel/{id}', function ($id) { /* update sebagian */ });
Route::delete('/artikel/{id}', function ($id) { /* hapus */ });
// Satu route untuk beberapa method sekaligus
Route::match(['get', 'post'], '/form', function () { /* ... */ });
// Semua method
Route::any('/semua', function () { /* ... */ });
4. Route Parameter
// Parameter wajib
Route::get('/user/{id}', function (string $id) {
return "User ID: $id";
});
// Parameter opsional (pakai ?)
Route::get('/user/{name?}', function (string $name = 'Guest') {
return "Halo, $name";
});
// Beberapa parameter sekaligus
Route::get('/post/{year}/{slug}', function (string $year, string $slug) {
return "Artikel $slug tahun $year";
});
5. Route dengan Constraint
// Hanya menerima angka
Route::get('/user/{id}', function ($id) {
return "User: $id";
})->where('id', '[0-9]+');
// Hanya menerima huruf
Route::get('/kategori/{nama}', function ($nama) {
return "Kategori: $nama";
})->where('nama', '[a-zA-Z]+');
// Shorthand helper
Route::get('/user/{id}', function ($id) {})->whereNumber('id');
Route::get('/slug/{slug}', function ($slug) {})->whereAlphaNumeric('slug');
6. Named Route
Named route memudahkan kamu membuat URL tanpa hardcode string - sangat berguna di view dan controller:
// Beri nama pada route
Route::get('/artikel', [ArtikelController::class, 'index'])->name('artikel.index');
Route::get('/artikel/{id}', [ArtikelController::class, 'show'])->name('artikel.show');
Route::get('/artikel/buat', [ArtikelController::class, 'create'])->name('artikel.create');
// Gunakan di blade template
// <a href="{{ route('artikel.index') }}">Semua Artikel</a>
// <a href="{{ route('artikel.show', ['id' => 5]) }}">Detail</a>
// Gunakan di PHP
$url = route('artikel.index');
return redirect()->route('artikel.index');
7. Route Group
// Group dengan prefix URL
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () { return 'Admin Dashboard'; });
Route::get('/users', function () { return 'Daftar User'; });
// URL: /admin/dashboard, /admin/users
});
// Group dengan middleware
Route::middleware(['auth'])->group(function () {
Route::get('/profile', function () { return 'Profile'; });
Route::get('/settings', function () { return 'Settings'; });
});
// Group dengan prefix DAN middleware
Route::prefix('admin')->middleware(['auth', 'is_admin'])->name('admin.')->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
// URL: /admin/dashboard, Named: admin.dashboard
});
8. Melihat Semua Route
# Lihat semua route yang terdaftar
php artisan route:list
# Filter berdasarkan nama
php artisan route:list --name=artikel
# Filter berdasarkan path
php artisan route:list --path=admin
9. Ringkasan
- Route didefinisikan di
routes/web.phpmenggunakan facadeRoute - Mendukung semua HTTP method: GET, POST, PUT, PATCH, DELETE
- Route parameter memungkinkan URL dinamis
- Named route memudahkan generate URL di seluruh aplikasi
- Route group untuk mengelompokkan route dengan prefix atau middleware yang sama
Tutorial berikutnya membahas controller di Laravel.
.jpg)
