Tutorial laravel kali ini akan membahas controller di laravel 12, Jika Anda adalah seorang Programer atau Backend developer, terutama yang bekerja dengan ekosistem PHP dan Laravel, Anda pasti tahu betapa pentingnya peran Controller dalam arsitektur Model-View-Controller (MVC) ini.
Controller adalah jembatan utama yang menghubungkan permintaan HTTP dari pengguna dengan logika aplikasi dan data Anda. Di Laravel 12, controller tidak hanya menjadi wadah untuk menempatkan logika, tetapi juga menjadi penentu utama dalam menciptakan kode yang bersih, terorganisir, dan mudah diuji (testable). Kesalahan dalam menggunakan controller dapat berujung pada kode yang disebut “Fat Controller“, sulit di maintain dan melanggar prinsip desain perangkat lunak.
Tutorial ini adalah membantu Anda memahami best practice menggunakan controller di laravel sehingga Anda bisa membangun aplikasi yang kuat dan scalable. Dimulai dari cara membuat Controller dasar hingga tips canggih seperti Single Action Controller dan implementasi Service Layer untuk menjaga controller Anda tetap ramping (slim).
Apa Itu Controller Laravel dan Mengapa Penting?
Dalam konteks MVC (Model-View-Controller) yang dianut Laravel, Controller adalah lapisan yang bertugas menerima Request (permintaan) dari Route, memprosesnya (dengan berinteraksi dengan Model atau Service), dan mengembalikan Response (seperti View, data JSON, atau Redirect).
Pentingnya Controller yang Baik:
- Pemisahan Tanggung Jawab (Separation of Concerns): Controller menjaga logika yang berhubungan dengan request dan response terpisah dari logika bisnis (Model atau Service).
- Keterbacaan Kode: Dengan controller yang rapi, developer baru akan lebih mudah memahami alur aplikasi.
- Kemudahan Pengujian: Controller yang tipis dan hanya bertugas mendelegasikan pekerjaan jauh lebih mudah diuji (Unit Test) daripada controller yang penuh dengan logika bisnis.
Semua controller di Laravel biasanya disimpan di direktori app/Http/Controllers.
Membuat Controller di Laravel 12: Perintah Dasar dan Jenis-jenisnya
Membuat Controller di Laravel sangatlah mudah berkat bantuan Artisan CLI (Command Line Interface).
1. Controller Dasar
Untuk membuat controller standar, gunakan perintah:
php artisan make:controller PostController
Ini akan menghasilkan class PostController di app/Http/Controllers:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PostController extends Controller
{
// ... Metode-metode Anda di sini
}
Setelah dibuat, Anda bisa mendaftarkannya di file route (routes/web.php atau routes/api.php):
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);
2. Resource Controller (Resourceful Controller)
Ini adalah best practice untuk mengimplementasikan operasi CRUD (Create, Read, Update, Delete) yang sesuai dengan prinsip RESTful. Daripada membuat Controller dengan banyak method secara manual, Laravel menyediakannya secara otomatis.
Untuk membuat Resource Controller, tambahkan flag –resource:
php artisan make:controller PhotoController --resource
Controller ini akan memiliki tujuh method standar:
- index(): Menampilkan daftar sumber daya.
- create(): Menampilkan formulir untuk membuat sumber daya baru.
- store(): Menyimpan sumber daya baru ke database.
- show(Model $model): Menampilkan satu sumber daya.
- edit(Model $model): Menampilkan formulir untuk mengedit sumber daya.
- update(Request $request, Model $model): Memperbarui sumber daya di database.
- destroy(Model $model): Menghapus sumber daya.
Menggunakan controller di laravel tipe ini di Route juga sangat singkat:
use App\Http\Controllers\PhotoController;
Route::resource('photos', PhotoController::class);
Perintah di atas secara otomatis mendaftarkan tujuh route RESTful (GET, POST, PUT/PATCH, DELETE) hanya dengan satu baris kode.
3. Single Action Controller
Saat sebuah controller hanya memiliki satu tugas (satu action), seperti memproses pembayaran atau menampilkan halaman landing sederhana, kita bisa menggunakan Single Action Controller (SAC). Ini sangat membantu menjaga controller tetap ramping.
Tambahkan flag –invokable saat membuat controller:
php artisan make:controller ShowProfileController --invokable
Controller ini hanya memiliki satu method yaitu __invoke():
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ShowProfileController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request)
{
return view('profile');
}
}
Routing untuk SAC juga ringkas:
use App\Http\Controllers\ShowProfileController;
Route::get('user/profile', ShowProfileController::class);
