Kembali ke Artikel
9 November 2025
vandyahmad24
Diperbarui: 18 April 2026

Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya

laravel

Ada satu fitur Laravel yang sering dilewatkan developer pemula: invokable controller. Padahal kalau dipakai di tempat yang tepat, kode jadi lebih bersih dan lebih mudah dibaca.

Artikel ini menjelaskan apa itu invokable controller, kapan sebaiknya dipakai, dan bagaimana cara implementasinya di Laravel 12.

Apa Itu Invokable Controller?

Invokable controller adalah controller yang hanya punya satu method: __invoke(). Karena hanya ada satu aksi, Anda tidak perlu menyebutkan nama method saat mendaftarkan route.

Ini berbeda dengan controller biasa yang bisa punya banyak method seperti index(), store(), update(), dll.

Buat invokable controller lewat Artisan:

php artisan make:controller ShowDashboardController --invokable

Hasilnya:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class ShowDashboardController extends Controller
{
    public function __invoke(Request $request)
    {
        //
    }
}

Cara Mendaftarkan ke Route

Karena hanya ada satu aksi, cara daftarkan ke route cukup langsung pakai nama class-nya:

use AppHttpControllersShowDashboardController;

Route::get('/dashboard', ShowDashboardController::class);

Bandingkan dengan controller biasa yang harus sebut method-nya:

Route::get('/dashboard', [DashboardController::class, 'index']);

Lebih ringkas, dan route-nya lebih mudah dibaca, terutama kalau ada banyak route.

Contoh Kasus Nyata

Misalnya Anda punya halaman yang menampilkan laporan bulanan. Logikanya spesifik untuk satu tujuan, tidak perlu dibagi ke beberapa method:

<?php

namespace AppHttpControllersReports;

use IlluminateHttpRequest;
use AppHttpControllersController;
use AppModelsOrder;

class MonthlyReportController extends Controller
{
    public function __invoke(Request $request)
    {
        $month = $request->query('month', now()->month);
        $year  = $request->query('year', now()->year);

        $orders = Order::whereMonth('created_at', $month)
                       ->whereYear('created_at', $year)
                       ->with('customer')
                       ->get();

        return view('reports.monthly', compact('orders', 'month', 'year'));
    }
}

Route-nya:

Route::get('/reports/monthly', MonthlyReportController::class)
     ->middleware('auth')
     ->name('reports.monthly');

Rapi. Satu controller, satu tujuan.

Kapan Pakai Invokable Controller?

Invokable controller cocok untuk:

  • Halaman yang hanya punya satu aksi (tampil laporan, proses webhook, generate PDF)
  • Action handler — satu action spesifik yang tidak perlu dibundel dengan aksi lain
  • Single-purpose endpoint yang ingin dipisah dari controller utama agar tidak membesar

Tidak cocok untuk resource yang punya banyak aksi CRUD. Untuk itu tetap pakai resource controller biasa.

Dependency Injection di Invokable Controller

Sama seperti controller biasa, Anda bisa inject service lewat constructor atau langsung di method __invoke():

<?php

namespace AppHttpControllers;

use AppServicesInvoiceService;
use IlluminateHttpRequest;

class GenerateInvoiceController extends Controller
{
    public function __construct(
        private InvoiceService $invoiceService
    ) {}

    public function __invoke(Request $request)
    {
        $validated = $request->validate([
            'order_id' => 'required|exists:orders,id',
        ]);

        $pdf = $this->invoiceService->generate($validated['order_id']);

        return response()->download($pdf);
    }
}

Baca Juga

Kalau Anda butuh tim untuk membangun aplikasi web berbasis Laravel, dari arsitektur sampai deployment — lihat layanan pengembangan aplikasi kami.

Tag: #laravel #php #tutorial
BACA JUGA

Artikel Lainnya di Kategori Laravel

laravel Laravel

9 November 2025

Routing di Laravel: Panduan Lengkap dengan Contoh Kode

Routing adalah pintu masuk semua request di Laravel. Sebelum request sampai ke controller atau logika apapun, dia harus melewati router dulu. Memahami cara kerja routing akan membuat kamu lebih mudah membangun struktur aplikasi yang rapi dan mudah di-maintain. Konsep Dasar: Bagaimana Request Diproses Saat browser mengirim request ke GET /posts, Laravel membaca file routes/web.php, mencari […]

Baca Artikel
Laravel

10 November 2025

Cara Membuat Custom Artisan Command di Laravel 12

Artisan bawaan Laravel sudah mencakup banyak kebutuhan. Tapi kadang Anda butuh command yang spesifik untuk proyek Anda, misalnya generate laporan harian, kirim email batch, atau sync data dari API eksternal. Di sinilah custom Artisan command berguna. Artikel ini menunjukkan cara membuat, mengatur parameter, dan menjalankan scheduled command di Laravel 12. Membuat Custom Command Gunakan Artisan […]

Baca Artikel
laravel Laravel

9 November 2025

Membuat Controller di Laravel 12: Resource, API, dan Best Practice

Controller adalah salah satu komponen paling sering ditulis di Laravel. Hampir setiap fitur butuh controller: dari menampilkan halaman, menyimpan data form, sampai mengembalikan JSON untuk API. Artikel ini membahas cara membuat controller di Laravel 12: dari controller dasar, resource controller, sampai best practice yang dipakai tim profesional. Membuat Controller Baru Gunakan perintah Artisan: php artisan […]

Baca Artikel

Ingin Membaca Artikel Lainnya?

Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.

Lihat Semua Artikel