~/blog/laravel-admin-architecture-design-guide-2026.md
Laravel 與後端開發 · 2026 / 02 / 09

Laravel Admin 2026 架構完整手冊:拒絕義大利麵程式碼,打造企業級後台的 5 大黃金法則

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
Laravel Admin 2026 架構完整手冊:拒絕義大利麵程式碼,打造企業級後台的 5 大黃金法則
目錄 table-of-contents.md

幾千行的 Controller 不是功能豐富的證明,而是架構缺席的證據;把所有邏輯塞進 Model 的「胖模型(Fat Model)」也只是換個地方堆債。企業級後台要活得久,靠的不是框架版本,而是分層的紀律。這篇整理出 Laravel Admin 的 5 大黃金法則,讓義大利麵程式碼從此在你的專案絕跡。

在 2026 年的今天,Laravel 生態系已經高度成熟,Filament PHP 幾乎統治了快速開發領域,而 Inertia.js 則成為了客製化互動的首選。但是,工具再強,如果底層架構(Architecture)像一盤義大利麵,系統遲早會因為技術債而崩潰。今天這篇文章,我不談怎麼 `npm install`,我們要談的是「設計」——如何設計一個可維護、可擴展,且連新來的實習生都能看得懂的 Laravel Admin 後台架構。

1. 2026 年的後台開發思維:從 MVC 到 ADR 與領域驅動

傳統的 MVC (Model-View-Controller) 在小型專案很好用,但在企業級後台(Enterprise Admin Panel)中,Controller 往往會變成「垃圾場」。所有的業務邏輯、驗證、通知、甚至第三方 API 呼叫都塞在裡面。

在 2026 年,我們更傾向於將職責拆分得更細。你可能聽過 Action Pattern 或是 Service Layer,這不是新名詞,但在 Laravel 12/13 的時代,這已經是標配。

為什麼 Controller 必須減肥?

試想一下,當你的產品經理說:「Eric,我們需要把後台的新增訂單功能,也開一支 API 給手機 App 用。」

如果你的邏輯都寫在 AdminController 裡,你只能選擇:
1. 複製貼上程式碼到 ApiController(製造重複代碼,維護地獄的開始)。
2. 硬著頭皮重構。

所以,Controller 的唯一職責應該是「接收請求」與「回傳回應」,中間的處理過程,請交給專業的來。

2. 黃金法則一:導入 Service Layer 與 Action Pattern

這是我在浪花科技最堅持的原則。不管專案多小,業務邏輯必須獨立。

  • Service (服務層): 處理較大範圍的業務邏輯,例如 `OrderService` 可能包含計算金額、套用優惠券等。
  • Action (單一行為): 2026 年非常流行且推薦的做法。一個 Class 只做一件事,例如 `CreateOrderAction`、`ApproveUserAction`。這樣非常適合單元測試。

讓我們看看程式碼的對比:

❌ 糟糕的寫法 (Fat Controller)


public function store(Request $request)
{
    $validated = $request->validate([...]);
    
    // 邏輯直接寫死在 Controller
    $order = Order::create($validated);
    
    // 寄信邏輯也混在一起
    Mail::to($user)->send(new OrderCreated($order));
    
    return redirect()->back();
}

✅ 2026 推薦架構 (Action Pattern)

我們將邏輯抽離到 Action 中,這樣無論是 Web 後台、API 還是 CLI 指令,都能重複使用。


// app/Actions/Order/CreateOrderAction.php
class CreateOrderAction
{
    public function execute(OrderData $data): Order
    {
        return DB::transaction(function () use ($data) {
            $order = Order::create($data->toArray());
            
            // 觸發事件,讓 Listeners 去處理寄信,保持 Action 純淨
            OrderCreated::dispatch($order);
            
            return $order;
        });
    }
}

// Admin/OrderController.php
public function store(OrderRequest $request, CreateOrderAction $action)
{
    // 使用 DTO 傳遞資料,而不是原始 Array
    $action->execute(OrderData::fromRequest($request));
    
    return to_route('admin.orders.index');
}

3. 黃金法則二:嚴格使用 DTO (Data Transfer Object)

到了 2026 年,如果你還在用關聯式陣列 (Associative Array) 到處傳遞資料,那真的太危險了。`$data['email']` 這種寫法,IDE 無法補全,靜態分析工具也無法除錯。

使用 spatie/laravel-data 或 PHP 8.2+ 的 readonly class 來建立 DTO,確保資料在 Service 或 Action 之間傳遞時,格式永遠是正確且可預測的。


class UserData
{
    public function __construct(
        public readonly string $name,
        public readonly string $email,
        public readonly ?string $role = 'user',
    ) {}
}

4. 黃金法則三:Filament 與 Headless 的抉擇

在後台介面(UI)的選擇上,2026 年呈現兩極化:

  1. Filament PHP (TALL Stack): 這是目前最主流的選擇。如果你的後台主要是給內部員工使用,做 CRUD、報表、簡單的儀表板,Filament 絕對是首選。它幫你省去了寫前端 Vue/React 的時間,開發速度是傳統方式的 3 倍以上。
  2. Headless + Inertia/Vue/React: 如果你的後台需要極致的互動體驗(例如類似 Figma 的畫布操作、複雜的即時戰情室),或者你的前端團隊與後端完全分離,那麼將 Laravel 當作純 API (Headless),搭配 Inertia.js 仍是王道。

Eric 的建議: 80% 的企業後台需求,用 Filament 就能解決且維護成本最低。不要為了秀技術而硬上前後端分離,那只是在增加未來的維護成本。

5. 黃金法則四:模組化設計 (Modular Monolith)

當專案變大,`app/Models` 裡有 50 個 Model,`app/Http/Controllers` 裡有 100 個 Controller 時,你會想哭。在 2026 年,模組化單體 (Modular Monolith) 是大型 Laravel 專案的標準架構。

我們不再依賴 Laravel 預設的資料夾結構,而是依照「業務領域」來分資料夾:

  • modules/ECommerce/ (包含該模組的 Models, Controllers, Actions, Migrations)
  • modules/UserManagement/
  • modules/Finance/

這樣做的好處是,當你想把「財務系統」拆出去變成微服務時,只要把 `Finance` 資料夾搬走就好,耦合度極低。

6. 黃金法則五:AI 輔助與自動化測試

既然是 2026 年,你的後台架構必須考慮 AI 的整合。我們會在架構中預留 AI Agent 的介面。

例如,設計一個 `AskAIController`,透過 Service Layer 呼叫 LLM (如 Google Gemini 或 OpenAI),讓管理員可以用自然語言查詢:「幫我列出上個月消費超過 5 萬的客戶」。

此外,測試是架構的防護網。使用 Pest PHP 撰寫 Feature Test,確保每一個 Action 邏輯正確。沒有測試的重構,就像在沒有安全繩的情況下走鋼索。

相關閱讀

想要深入了解如何優化你的 Laravel 架構,或是解決技術債問題,建議閱讀以下幾篇我精選的文章,這能幫你建立更完整的技術觀:

🚀 您的後台系統需要架構重構嗎?

如果您的企業系統面臨效能瓶頸、維護困難,或是想要導入 2026 最新技術棧,浪花科技擁有最資深的 Laravel 開發團隊,能為您打造高擴展性的數位資產。

立即填寫表單聯繫我們

// FAQ

常見問題

為什麼企業級 Laravel 後台不該把邏輯都寫在 Controller 裡?
在企業級後台中,Controller 容易變成「垃圾場」,business logic、驗證、通知、第三方 API 呼叫全塞進去。問題在於當需求要把同一功能也開一支 API 給手機 App 用時,你只能複製貼上製造重複代碼,或被迫重構。Controller 的唯一職責應該是接收請求與回傳回應,中間處理交給 Service 或 Action。
Service Layer 和 Action Pattern 有什麼差別?
Service(服務層)處理較大範圍的業務邏輯,例如 OrderService 可能包含計算金額、套用優惠券等;Action(單一行為)則是一個 Class 只做一件事,例如 CreateOrderAction、ApproveUserAction。Action 的好處是邏輯單純、職責單一,非常適合單元測試,且能在 Web 後台、API、CLI 指令中重複使用。
後台 UI 該選 Filament PHP 還是 Headless 前後端分離?
若後台主要給內部員工使用,做 CRUD、報表、簡單儀表板,Filament PHP(基於 TALL Stack)是首選,可省去寫前端的時間。若需要極致互動體驗(如類似 Figma 的畫布操作、複雜即時戰情室)或前後端團隊完全分離,則把 Laravel 當純 API 搭配 Inertia.js 較合適。多數企業後台用 Filament 即可解決且維護成本最低,不必為秀技術硬上前後端分離。
什麼是模組化單體(Modular Monolith)?它解決什麼問題?
當專案變大、Model 和 Controller 數量爆增時,依 Laravel 預設資料夾結構很難維護。模組化單體改為依業務領域分資料夾,例如 modules/ECommerce、modules/Finance,把該領域的 Models、Controllers、Actions、Migrations 集中放在一起。好處是耦合度低,未來想把某個模組拆成微服務時,直接搬走整個資料夾即可。
導入 Action Pattern 會讓檔案數量變很多,這樣值得嗎?
會讓檔案變多,這是一種權衡。但每個檔案的邏輯變簡單、職責變單一,對長期維護的企業級專案來說,「容易找到程式碼位置」比「檔案數量少」重要得多。搭配良好的命名規範與資料夾分類,檔案數量帶來的負擔可以被有效管理。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?