Belajar Laravel 13 #2: Struktur Modern dan Routing

Heru Iryanto
Heru Iryanto
Teacher, Content Creator and Full-Stack Developer

Sekarang mari buka VS Code Anda. Jika Anda membuka folder belajar-laravel (di VS Code klik File > Open Folder > Pilih folder belajar-laravel yang baru saja di-install), Anda mungkin akan terintimidasi. Tidak ada lagi satu buah file index.php yang tergeletak sembarangan seperti di PHP biasa. Ada puluhan folder aneh.

Namun jangan panik! Sejak versi 11 ke atas, Laravel telah berevolusi menjadi arsitektur yang sangat langsing (Slim Skeleton). Banyak file-file Middlewares dan konfigurasi Http/Kernel raksasa yang dulunya membingungkan telah disembunyikan.

1️⃣ Peta Harta Karun (Anatomi Folder)

Anda tidak perlu menghafal semuanya. Hanya 5 tempat ini yang akan Anda buka setiap hari:

  1. Folder routes/ (Sang Satpam Pintu): Di sinilah Anda mendaftarkan seluruh alamat URL website Anda. File utamanya adalah web.php.
  2. Folder resources/views/ (Sang Tampilan): Di sini Anda menyimpan seluruh kerangka HTML yang akan dilihat oleh mata pengunjung.
  3. Folder app/Http/Controllers/ (Sang Otak): Ini adalah tempat Otak MVC Anda bekerja. Tempat file-file pengambil keputusan bersemayam. Logika CRUD dan yang lainnya ada di sini.
  4. Folder app/Models (Sang Penghubung Data): Folder tempat menyimpan Model. Model adalah file yang menyimpan logika untuk berinteraksi dengan Database. Relasi antar tabel dan yang lainnya ada di sini. Field mana saja yang bisa diedit dan tidak bisa diedit juga ditentukan disini.
  5. Folder database/migrations (Sang Pembuat Tabel Database): Folder tempat menyimpan file migration. Migration adalah blueprint atau cetak biru untuk membuat struktur tabel di database.

2️⃣ Jantung Eksekusi: File .env

Sebelum ngoding, lihatlah file bernama .env (Environment) di direktori utama Anda. Ini adalah brankas rahasia aplikasi Anda. Segala kunci Password Database, Nama Perusahaan Anda, atau koneksi kunci rahasia (API Key) ke server pembayaran pihak ketiga, diletakkan di sini.

# Contoh isi rahasia di dalam file .env
APP_NAME=ProyekHebatku
APP_ENV=local
APP_KEY=base64:rahasia...
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar-laravel
DB_USERNAME=root
DB_PASSWORD=

Pada kode kamu, silahkan ubah nilai:

  • DB_CONNECTION menjadi mysql dari defaultnya sqlite
  • DB_DATABASE sesuaikan dengan nama database yang ada di Laragon yang telah kamu buat (Jika belum ada database, laravel juga bisa membuatkannya otomatis dengan perintah php artisan migrate nanti).
  • Jangan lupa tanda pagar (#) dihapus pada baris yang akan kamu ubah, agar nilai tersebut bisa terbaca oleh Laravel.
  • Nilai yang lainnya biarkan saja default.

Setelah itu coba hidupkan Laragon-nya, lalu jalankan perintah ini di terminal kalian :

php artisan migrate

Jika berhasil, kamu akan melihat database degan nama belajar-laravel (sesuai yang ada di .env) dengan tabel users, password_reset_tokens, failed_jobs dan beberapa tabel default laravel lainnya di TablePlus kamu (sesuai dengan yang ada di folder migration, folder tersebut berisi blueprint/cetak biru untuk membuat tabel database).

[!WARNING] File .env sangat sakral. Ia tidak boleh ikut diunggah ke Github publik atau di-share ke teman Anda, karena di sanalah sandi gembok MySQL asli Anda berada. Di Github, biasanya hanya disiapkan template kosong bernama .env.example.

Untuk melihat web Laravel kamu di browser, silahkan hidupkan server dengan perintah berikut di terminal kamu:

php artisan serve

Nanti, silakan ketik alamat ini di bowser untuk melihat web Laravel kamu:

http://localhost:8000

Untuk menghentikan perintah artisan tersebut (stop laravel web server), silahkan tekan keyboard Ctrl + C di terminal kamu.

3️⃣ Seni Mengatur Rute (Routing)

Pilar pertama saat membuat aplikasi di Laravel adalah menjawab pertanyaan: “Jika pengunjung mengetik alamat localhost:8000/kontak, apa yang harus ditampilkan di layar?”

Buka file routes/web.php, dan mari kita mulai mengetik Rute pertama Anda:

<?php

use Illuminate\Support\Facades\Route;

// 1. Rute Beranda Utama (/)
Route::get('/', function () {
    return "Selamat datang di Website Framework Laravel Pertama Saya!";
});

// 2. Rute Kontak Kami (/kontak)
Route::get('/kontak', function () {
    return "Silakan hubungi kami di nomor: 0812-3456-7890";
});

// 3. Rute Dinamis dengan Variabel Tangkapan (/profil/nama)
Route::get('/profil/{nama}', function ($nama) {
    return "Halo, ini adalah halaman profil milik " . $nama;
});

Coba simpan file tersebut, lalu buka Browser Anda.

Ketik http://localhost:8000/kontak. Tulisan nomor HP akan muncul.

Ketik http://localhost:8000/profil/heru. Layar otomatis menyapa nama Anda!

Terkadang ketika kita melakukan perubahan di laravel, terutama di web.php, route yang baru kita buat tidak bisa diakses. Jika hal ini terjadi kamu harus melakukan optimize dengan perintah berikut di terminal kamu:

php artisan optimize

Selain get, ada beberapa method lain seperti post, put, delete, dll. Kita tidak akan membahas method tersebut untuk saat ini karena akan dibahas di materi selanjutnya. Namun pada dasarnya method tersebut digunakan untuk melakukan aksi berbeda pada browser. Contoh sederhana get digunakan untuk mengambil data, post digunakan untuk mengirimkan data, put digunakan untuk memperbarui data dan delete digunakan untuk menghapus data.

Sebagai latihan kamu, silakan buat route baru seperti ini:

  • /alamat menampilkan alamat kamu saat ini.
  • /sekolah/{namasekolah} menampilkan nama sekolah kamu.

4️⃣ Keajaiban Rute Dinamis (Wildcards)

Pada Rute nomor 3 di atas, kita meletakkan variabel penangkap di antara kurung kurawal {nama}. Itu adalah Router Parameter.

Di kelas PHP Prosedural biasa, jika Anda ingin mengirim data rahasia lewat URL, Anda harus menggunakan metode jelek seperti profil.php?nama=heru&id=5 ($_GET). Di Laravel, hal itu diharamkan. Laravel mengubahnya menjadi URL Bersih (Clean URL): profil/heru/5. Rute inilah yang membuat website Anda ramah untuk pencarian Google (SEO Friendly).

🗽 Kesimpulan

Menakjubkan bukan? Tidak perlu membuat 10 file .php berbeda seperti kontak.php, profil.php, tentang.php. Cukup dengan 1 file sakti routes/web.php, Anda memegang kendali penuh atas ribuan jalan masuk ke istana Anda.

Namun, di Rute tadi kita baru memunculkan Teks biasa (return "Halo"). Bagaimana jika kita ingin memunculkan sebuah Tampilan Web utuh yang lengkap dengan desain warna-warni Tailwind? Mari pindah ke dunia sihir Tampilan HTML di Sihir Tampilan Blade & Komponen.