Programming Tutorial Laravel Web Development 29 July 2025

Laravel Actions: Cara Modern Bikin Controller Lebih Rapi

Laravel Actions: Cara Modern Bikin Controller Lebih Rapi
Bagikan:

Pernah nggak sih kamu merasa controller di project Laravel makin lama makin gemuk dan susah di-maintain? Tenang, kamu nggak sendirian! Banyak developer Laravel yang mengalami hal serupa, apalagi kalau aplikasi makin berkembang dan logic bisnis makin kompleks. Nah, di artikel ini kita bakal bahas solusi modern yang lagi naik daun: Laravel Actions.

Laravel Actions itu apa sih? Sederhananya, Actions adalah class khusus yang tugasnya menangani satu aksi atau proses bisnis tertentu. Jadi, logic yang tadinya numpuk di controller bisa dipindah ke Action, bikin controller jadi lebih ramping dan mudah dibaca. Konsep ini sangat cocok buat kamu yang pengen codebase tetap rapi, gampang di-test, dan scalable.

Yuk, kita bahas step-by-step mulai dari konsep dasar, alasan pakai Actions, sampai contoh implementasi di Laravel versi terbaru (Laravel 11+). Artikel ini cocok banget buat pemula, jadi jangan khawatir kalau kamu baru mulai belajar Laravel!

Deskripsi Singkat Laravel Actions Laravel Actions adalah class PHP yang biasanya hanya punya satu method utama, misal execute(), untuk menjalankan satu tugas spesifik. Mirip “command object” di pattern OOP. Dengan Actions, kamu bisa:

  • Memisahkan logic bisnis dari controller
  • Reuse logic di banyak tempat (controller, job, event, dsb)
  • Unit test lebih mudah

Kenapa Harus Pakai Actions? Controller yang gemuk bikin pusing! Dengan Actions, kamu dapat:

  • Controller lebih ramping: Fokus ke alur aplikasi, bukan detail logic
  • Test lebih gampang: Logic bisnis bisa di-test tanpa HTTP layer
  • Reusable: Satu Action bisa dipakai di banyak tempat
  • Lebih terstruktur: Logic bisnis nggak tercecer di mana-mana

Contoh Kasus: Membuat Postingan Baru Biasanya, logic bikin postingan ada di controller kayak gini:

// app/Http/Controllers/PostController.php
public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required',
        'body' => 'required',
    ]);
    $post = Post::create($validated);
    // Mungkin ada logic lain: kirim notifikasi, dsb
    return response()->json($post);
}

Kalau logic makin banyak, controller makin panjang dan susah di-maintain. Nah, dengan Actions, kita bisa refactor kayak gini:

// app/Actions/CreatePost.php
namespace App\Actions;

use App\Models\Post;

class CreatePost
{
    public function execute(array $data): Post
    {
        $post = Post::create($data);
        // Bisa tambahkan logic lain: event, notifikasi, dsb
        return $post;
    }
}

Controller jadi lebih ramping:

// app/Http/Controllers/PostController.php
use App\Actions\CreatePost;

public function store(Request $request, CreatePost $createPost)
{
    $post = $createPost->execute($request->validated());
    return response()->json($post);
}

Struktur Folder Sederhana:

app/
  Actions/
    CreatePost.php
  Http/
    Controllers/
      PostController.php
  Models/
    Post.php

Kapan Harus Pakai Actions?

  • Kalau logic di controller lebih dari satu langkah
  • Logic yang sama dipakai di beberapa tempat
  • Aplikasi makin besar dan butuh maintainability
  • Tim kerja lebih dari satu orang

Kalau cuma CRUD sederhana, Actions kadang overkill. Tapi kalau aplikasi sudah mulai kompleks, Actions sangat membantu.

Tips Migrasi ke Actions (Decision Tree Sederhana) Bayangkan kamu lagi refactor controller:

  • Apakah method controller melakukan lebih dari satu hal? Kalau ya, pertimbangkan pakai Action.
  • Apakah logic itu dipakai di tempat lain? Kalau ya, wajib pakai Action!
  • Kalau logic sangat sederhana dan hanya dipakai sekali, boleh tetap di controller.

Performance? Tenang, Actions itu cuma class PHP biasa, nggak ada overhead berarti. Laravel container juga resolve dependency dengan sangat efisien.

Best Practice dan Tips

  • Satu Action = satu tugas spesifik
  • Beri nama class dan method yang jelas, misal CreatePost, UpdateProfile, dsb
  • Tambahkan test unit untuk setiap Action
  • Gunakan dependency injection untuk resource yang dibutuhkan
  • Dokumentasikan setiap Action, apalagi kalau logicnya penting

Error yang Sering Dialami Pemula

  • Lupa inject Action di controller (pastikan sudah di constructor atau parameter method)
  • Salah namespace (pastikan namespace Action sudah benar)
  • Lupa validasi data sebelum kirim ke Action

Resource & Dokumentasi Resmi

Ringkasan & Langkah Selanjutnya Laravel Actions bukan “obat ajaib” yang langsung bikin codebase sempurna, tapi sangat membantu menjaga controller tetap ramping dan logic bisnis lebih terstruktur. Untuk tim yang ingin maintainability dan testability, Actions adalah solusi modern yang layak dicoba.

Yuk, mulai refactor controller kamu sedikit demi sedikit. Jangan takut trial-error, karena belajar programming memang butuh proses. Semangat belajar dan happy refactoring! 🚀