Kalau episode pertama kamu sudah berhasil menjalankan php artisan serve dan melihat welcome page Laravel, selamat! Kamu sudah di track yang tepat. Tapi sekarang pertanyaannya: folder apa sih yang harus kamu pakai? Kok bisa sebanyak ini?
Jangan khawatir. Di bagian 2 ini kita breakdown struktur folder Laravel 13 secara sederhana, dan kamu akan memahami konsep MVC yang jadi "tulang punggung" setiap aplikasi Laravel. Siap? Mari kita mulai.
Konsep MVC: Analogi Sederhana
Sebelum terjebak di folder-folder, pahami dulu apa itu MVC. Bayangkan Laravel itu seperti restoran:
- Model = Juru masak. Dia yang tau mana bahan di dapur, gimana cara masak, dan hasil akhir resep. Dia ngurusin data dan logika bisnis.
- View = Piring dan plating. Dia yang ngatur tampilan makanan ke pelanggan. HTML dan CSS-mu hidup di sini.
- Controller = Pelayan restoran. Dia yang terima order (request), kasih tau juru masak (Model) apa yang diminta, ambil hasilnya, terus sajikan di piring yang cantik (View).
User kamu adalah pelanggan. Dia pesan melalui menu (routes), pelayan (controller) mendengarkan, pergi ke dapur (model), ambil hidangan (view), dan sajikan.
Alur Request Nyata: Contoh "/products"
Katakanlah user kamu buka URL /products di browser. Inilah yang terjadi:
- Routes (Papan Petunjuk): Browser mengirim request ke server. File
routes/web.phpmembaca request itu. "Oh, dia minta/products. Oke, arahan dia ke ProductController@index." - Controller (Pelayan):
ProductControllermenerima request. Dia bilang, "Tunggu, aku minta data semua produk dulu." Dia panggilProduct::all()dari Model. - Model (Juru Masak): Model
Productambil data dari database. Dia kembalikan array atau collection berisi semua produk. - View (Piring): Controller terus terang data itu ke View
products.index. View ngambil data, loop semua produk, bikin HTML cantik dengan nama, harga, deskripsi produk. - Response: Browser user menerima HTML siap pakai. User senang melihat daftar produk.
Singkatnya: Request → Routes → Controller → Model → View → HTML yang dilihat user.
Struktur Folder Laravel 13 Yang Perlu Kamu Tahu
| Folder | Fungsi | Sering Disentuh Pemula? |
|---|---|---|
app/ |
Hati dari aplikasi. Ini tempat Model, Controller, Observer, Service Provider hidup. 90% kode bisnis kamu ada di sini. | ✅ SANGAT SERING |
app/Models/ |
Tempat file Model (misalnya Product.php, User.php). Satu file = satu tabel database biasanya. | ✅ SANGAT SERING |
app/Http/Controllers/ |
Tempat semua Controller kamu. Ini "pelayan" yang handle request dan logika. | ✅ SANGAT SERING |
routes/ |
File rute aplikasi. web.php untuk web routes, api.php untuk API routes. Papan petunjuk utama. |
✅ SERING |
resources/ |
Tempat View (Blade template), CSS, JavaScript belum di-compile. Front-end assets mentah ada di sini. | ✅ SERING |
resources/views/ |
Semua file Blade (.blade.php) — template HTML kamu. | ✅ SERING |
database/ |
Migration, seeder, factory. Mengatur struktur dan isi database. | ✅ SERING (pas setup) |
database/migrations/ |
File berisi perintah buat table database. Contoh: 2024_01_15_create_products_table.php. |
✅ SERING (pas setup) |
config/ |
File konfigurasi aplikasi. Database, mail, app name, timezone, dll. | ⚠️ JARANG (biasanya udah default) |
public/ |
Folder yang bisa diakses publik di browser. CSS/JS compiled, gambar, favicon ada di sini. | ⚠️ JARANG (asset auto-generated) |
storage/ |
Tempat cache, log, upload file user. Bisa kasih akses public link dari sini. | ⚠️ JARANG (system handle otomatis) |
tests/ |
File unit test dan feature test kamu. Testing automation. | ⚠️ JARANG (advanced pemula) |
Folder Mana yang Paling Sering Kamu Buka?
Sebagai pemula, 80% waktu kamu akan di 4 tempat ini:
app/Models/— Bikin Model baru, define relasi tabel, tambah method query.app/Http/Controllers/— Bikin Controller, handle request logic, panggil Model, pass data ke View.routes/web.php— Daftar route baru, atur endpoint aplikasi.resources/views/— Bikin file Blade, design tampilan, tampilkan data dari Controller.
Folder lainnya? Biarkan dulu sampai kamu mahir keempat di atas. Jangan terpaksa membuka config/, storage/, atau bootstrap/ kalau belum butuh.
Diagram Alur Request MVC di Laravel
Ini visualisasi alur saat user request sesuatu:
User ketik /products
↓
routes/web.php ("Mana rute /products?")
↓
ProductController@index ("Ambil data products")
↓
Product Model ("Query database, return data")
↓
resources/views/products/index.blade.php ("Render HTML pakai data")
↓
Browser user lihat halaman products
Setiap step ini punya file terpisah. Itulah keindahan MVC — separation of concerns. Kalau ada bug di harga produk, kamu langsung tahu cek Model atau View, bukan Controller.
Tips untuk Pemula Saat Mengorganisir Folder
- Satu Model = Satu Tabel Database. Model
Productuntuk tabelproducts- Controller Nama Singular atau Plural? Laravel convention pakai singular:
ProductController, bukanProductsController. Method dalam controller bisa pakai plural (index()return banyak produk).- View Organize Pake Subfolder. Jangan semua file Blade di
resources/views/langsung. Bikin subfolder:resources/views/products/,resources/views/admin/, dll.- Route File Bisa Dipecah. Kalau route banyak, pecah
routes/web.phpke beberapa file di subfolder. Tapi jangan sebelum project jadi besar.- Folder
app/Bisa Dikembang. Nanti kamu bisa buat subfolder sepertiapp/Services/,app/Traits/,app/Events/sesuai kebutuhan. Tapi di awal, jangan perlu ribet. - Controller Nama Singular atau Plural? Laravel convention pakai singular:
Kesimpulan
Struktur folder Laravel mungkin terlihat kompleks di awal, tapi sebenarnya logis. MVC adalah pola yang memisahkan tanggung jawab: Model urus data, View urus tampilan, Controller urus logika. Setiap permintaan user mengalir melalui alur yang sama: routes → controller → model → view → response.
Untuk sekarang, fokus aja di empat folder utama: app/Models/, app/Http/Controllers/, routes/, dan resources/views/. Sisanya akan kamu pahami saat project berkembang. Di episode berikutnya, kita akan dive lebih dalam ke routing dan membuat route pertama kamu. Sampai jumpa!