laravel controller | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel controller

Saturday, April 11, 2026

laravel controller

#Laravel #Controller #PHP #MVC
📚 ARTIKEL 7 DARI 50 — SERI BELAJAR LARAVEL LENGKAP

Controller:
Otak di Balik Logika Aplikasi Laravel

Di artikel sebelumnya kamu sudah menguasai routing Laravel. Sekarang tiba saatnya berkenalan dengan si otak di balik semua logika itu — Controller. Tanpa Controller, routing-mu hanyalah GPS tanpa pengemudi.

⏱️
Estimasi Baca
13 Menit
🎯
Level
Pemula
📅
Update
2025

Pernah nonton film action? Ada sutradara yang mengatur semua adegan — siapa yang ngomong apa, kapan pintu dibuka, dan kapan ledakan terjadi. Penonton tidak melihat sang sutradara, tapi tanpa dia semua berantakan. Nah, Controller di Laravel persis seperti sutradara itu.

Di artikel sebelumnya (Artikel 6), kamu sudah belajar bagaimana routing Laravel mengarahkan URL ke tujuan yang tepat. Tapi selama ini kita menaruh logika langsung di dalam fungsi anonim — dan itu bukan cara yang baik untuk project nyata. Controller hadir untuk memisahkan logika aplikasi dari definisi route, membuat kode lebih rapi, testable, dan mudah dikembangkan. Artikel ke-7 dari 50 Artikel Belajar Laravel ini akan memandu kamu step by step!

🧠 Definisi Inti

"Controller adalah kelas PHP yang bertugas menerima request dari route, memproses logika bisnis, lalu mengembalikan response ke pengguna — bisa berupa view, JSON, atau redirect."

Controller adalah bagian C dari pola arsitektur MVC (Model–View–Controller) yang menjadi fondasi Laravel. Ia menjadi jembatan antara Route (jalur masuk) dan View/Model (output dan data).

🏗️ Memahami Controller dalam Routing Laravel: Konsep MVC

Bayangkan sebuah restoran. Ada tiga bagian penting: menu (View) yang dilihat pelanggan, dapur (Model) yang menyimpan dan mengolah bahan makanan, dan pelayan (Controller) yang menjadi penghubung — menerima pesanan, menyampaikannya ke dapur, lalu membawakan hasilnya ke meja pelanggan.

Dalam konteks routing Laravel, ketika pengguna mengakses URL /produk, route meneruskan request tersebut ke Controller. Controller kemudian memutuskan: perlu ambil data dari database? Perlu validasi? Perlu redirect? Semua logika itu ada di sini.

🔥 Fakta Menarik

Pola MVC (Model-View-Controller) pertama kali diperkenalkan oleh Trygve Reenskaug pada tahun 1979 saat bekerja di Xerox PARC — jauh sebelum web ada! Sekarang, hampir semua framework web modern mengadopsi pola ini, termasuk Laravel, Django, Ruby on Rails, dan Spring Boot.

Aspek Route Closure Route + Controller ✅
Organisasi kode Semua di web.php — cepat berantakan ✅ Terpisah, rapi, mudah dicari
Route caching ❌ Tidak bisa di-cache ✅ Bisa di-cache (lebih cepat)
Unit Testing ❌ Sulit diuji secara terpisah ✅ Mudah ditulis unit test-nya
Cocok untuk Prototyping / route sangat sederhana ✅ Semua skala project
Reusability ❌ Logika tidak bisa dipakai ulang ✅ Method controller bisa dipanggil di mana saja

⚙️ Cara Membuat Controller Laravel: Panduan Langkah demi Langkah

Cukup teorinya! Sekarang kita buat Controller pertamamu. Laravel menyediakan perintah Artisan yang membuat proses ini jadi super cepat — kamu tidak perlu membuat file PHP secara manual.

1

Generate Controller dengan Artisan

Jalankan perintah ini di terminal project Laravel kamu. Laravel akan membuat file controller secara otomatis di folder app/Http/Controllers/.

Terminal / CMD
# Controller biasa
php artisan make:controller ProdukController

# Controller lengkap dengan 7 method CRUD (Resource)
php artisan make:controller ProdukController --resource

# Controller + Model sekaligus (super produktif!)
php artisan make:controller ProdukController --resource --model=Produk
2

Struktur File Controller yang Dihasilkan

Buka file app/Http/Controllers/ProdukController.php. Ini adalah struktur dasarnya:

app/Http/Controllers/ProdukController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProdukController extends Controller
{
    // Tampilkan daftar semua produk
    public function index() {
        return view('produk.index');
    }

    // Tampilkan form tambah produk
    public function create() {
        return view('produk.create');
    }

    // Simpan produk baru ke database
    public function store(Request $request) {
        // Logika validasi & simpan data
    }

    // Tampilkan detail 1 produk
    public function show($id) {
        return view('produk.show', ['id' => $id]);
    }
}
3

Hubungkan Route ke Controller

Setelah Controller dibuat, sambungkan ia ke routing Laravel di file routes/web.php. Ada dua cara:

routes/web.php
use App\Http\Controllers\ProdukController;

// Cara 1: Tunjuk method spesifik
Route::get('/produk', [ProdukController::class, 'index']);
Route::get('/produk/{id}', [ProdukController::class, 'show']);

// Cara 2: Resource route — 7 route dalam 1 baris! 🎉
Route::resource('produk', ProdukController::class);
💡 Tips Produktivitas

Gunakan flag --resource saat membuat Controller supaya Laravel langsung menyiapkan ke-7 method standar CRUD: index, create, store, show, edit, update, destroy. Kamu tinggal isi logika di dalamnya — hemat waktu puluhan menit!

🔬 Fitur Lanjutan Controller yang Sering Dipakai di Routing Laravel

Setelah bisa membuat Controller dasar, ada beberapa fitur yang akan kamu pakai sehari-hari dalam mengembangkan aplikasi Laravel. Berikut fitur-fitur esensial yang wajib kamu kuasai:

A

Menerima Data dari Request

Controller menerima data dari form, URL parameter, atau query string melalui objek Request yang diinjeksikan otomatis oleh Laravel.

public function store(Request $request) {
    // Ambil input dari form
    $nama = $request->input('nama');
    $harga = $request->input('harga', 0); // default 0

    // Validasi data — jangan lewatkan ini!
    $request->validate([
        'nama'  => 'required|string|max:255',
        'harga' => 'required|numeric|min:0',
    ]);

    // Simpan ke database (akan dibahas di artikel Model)
    return redirect()->route('produk.index');
}
B

Mengembalikan Response: View, JSON, atau Redirect

Controller bisa mengembalikan tiga jenis response utama sesuai kebutuhan aplikasimu.

// 1. Return View (untuk web biasa)
return view('produk.index', ['produk' => $data]);

// 2. Return JSON (untuk API / AJAX)
return response()->json([
    'status'  => 'success',
    'message' => 'Data berhasil disimpan',
]);

// 3. Redirect (setelah form submit)
return redirect()->route('produk.index')
         ->with('success', 'Produk berhasil ditambahkan!');
Insight Penting

Pola Post/Redirect/Get (PRG) adalah standar industri setelah form submit. Jangan langsung return view setelah menyimpan data — selalu redirect dulu! Ini mencegah pengguna tidak sengaja mengirim form dua kali hanya karena refresh halaman. Method with('success', '...') menyimpan pesan ke session yang bisa ditampilkan di halaman berikutnya.

🎯 Single Action Controller: Satu Controller Satu Tugas

Tidak semua halaman butuh 7 method. Kadang ada halaman yang hanya punya satu fungsi — misalnya halaman dashboard, atau proses logout. Untuk kasus ini, Laravel menyediakan Single Action Controller (juga disebut Invokable Controller).

Single Action Controller
# Generate dengan flag --invokable
php artisan make:controller DashboardController --invokable

// Isi file DashboardController.php
class DashboardController extends Controller
{
    // Method __invoke dipanggil otomatis
    public function __invoke() {
        return view('dashboard');
    }
}

// Di routes/web.php — tidak perlu sebut method!
Route::get('/dashboard', DashboardController::class);

📊 7 Method Resource Controller: Referensi Lengkap

Ini adalah paduan antara routing Laravel dan method controller yang dihasilkan oleh Route::resource():

Method URL Action Fungsi
GET /produk index Tampilkan semua data
GET /produk/create create Tampilkan form tambah
POST /produk store Simpan data baru
GET /produk/{id} show Tampilkan 1 data
GET /produk/{id}/edit edit Tampilkan form edit
PUT /produk/{id} update Update data yang ada
DELETE /produk/{id} destroy Hapus data
⚠️ Perhatian!

Jangan taruh terlalu banyak logika di dalam Controller! Ini perangkap umum pemula Laravel. Controller seharusnya hanya bertugas menerima request dan mengembalikan response. Logika bisnis yang kompleks sebaiknya dipindahkan ke Service Class atau langsung ke Model. Controller yang gemuk (fat controller) adalah tanda bahwa arsitekturmu perlu diperbaiki.

💡 Tips Naming Convention

Laravel menggunakan konvensi penamaan yang konsisten: nama Controller selalu dalam bentuk PascalCase dan diakhiri dengan kata "Controller" — contoh: UserController, OrderController, ProdukController. Ikuti konvensi ini agar kode kamu mudah dibaca oleh developer lain (dan dirimu sendiri 6 bulan kemudian 😄).

✅ Kesimpulan

Controller + Routing Laravel = Kombinasi Mematikan!

Sekarang kamu sudah punya dua senjata utama: routing Laravel untuk mengarahkan URL, dan Controller untuk menjalankan logika di baliknya. Kombinasi keduanya adalah inti dari hampir semua aplikasi Laravel yang ada di dunia. Poin utama yang perlu kamu ingat:

  • Controller adalah kelas PHP yang menjadi perantara antara Route dan View/Model
  • Buat Controller dengan php artisan make:controller NamaController
  • Gunakan flag --resource untuk mendapatkan 7 method CRUD sekaligus
  • Hubungkan ke routing Laravel dengan sintaks [NamaController::class, 'namaMethod']
  • Single Action Controller cocok untuk halaman dengan satu fungsi saja
  • Jangan biarkan Controller jadi terlalu gemuk — pindahkan logika kompleks ke tempat yang tepat

Ini adalah bagian dari 50 Artikel Belajar Laravel yang dirancang untuk membawa kamu dari nol hingga bisa membangun aplikasi nyata. Di artikel berikutnya, kita akan belajar View & Blade Templating — cara membuat tampilan yang dinamis dan elegan.

#Laravel #Controller #RoutingLaravel #MVC #BelajarLaravel #PHP

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux