Skip to main content

什麼是回應

控制器或路由必須向使用者的瀏覽器回傳某種回應。 Laravel 提供簡潔的機制,讓字串、陣列、view、redirect、JSON 等各種形式的回應都能輕鬆傳回。

基本回應

回傳字串

最簡單的回應是回傳字串。 Laravel 會自動轉為合適的 HTTP 回應。

回傳陣列

回傳陣列時,Laravel 會自動轉為 JSON 形式回應。
將 Eloquent model 或 collection 直接 return 時也會自動轉為 JSON。因此常被用來輕鬆製作 API。

回傳 Eloquent model

Response 物件

使用 response() helper,可回傳指定 HTTP 狀態碼與 header 的詳細回應。
response() 第 1 個引數是回應 body,第 2 個引數是 HTTP 狀態碼。

常用 HTTP 狀態碼

View 回應

要從控制器顯示 Blade 樣板,使用 view()。 這是 Web 應用中最常見的回應。
view() 第 1 個引數是 view 名稱,第 2 個引數是要傳給 view 的資料陣列。
在回傳型別上明確標示 Illuminate\View\View,可讓程式碼意圖更清楚。

response()->view() 精細控制

若要同時指定狀態碼或 header,可使用 response()->view()

Redirect

基本 redirect

redirect() helper 會回傳 redirect 回應。 常用於表單送出後導向另一頁面。
在控制器中的範例:

導向具名路由

使用 route() 函式,可不必寫 URL,改以路由名稱指定 redirect 目標。 URL 變更也不需修改,因此善用具名路由是最佳實務。

回到前一頁

back() 可回到使用者剛才所在的頁面。 常用於驗證失敗時的 redirect。

附帶 flash 訊息的 redirect

使用 with() 可在 redirect 時附帶 session 訊息。 方便在表單送出成功後顯示訊息。
在 Blade 樣板中顯示訊息:

JSON 回應

製作 API 時,用 response()->json() 回傳 JSON 回應。 會自動設定 Content-Type: application/json header。
亦可指定狀態碼。
在控制器中的範例:
單純 return 陣列或 Eloquent model 也會變成 JSON 回應,但使用 response()->json() 可以更細緻地控制狀態碼與 header。

回應 Header

header() 方法可為回應加上 HTTP header。
要一次設定多個 header 可使用 withHeaders()

實務範例:在控制器中的分工

以下整理依用途分工使用回應的範例。
1

定義路由

2

控制器的實作

Web 應用中,ViewRedirectResponse 的分工是基本。顯示型 action 用 View,變更型(建立、更新、刪除)action 在處理後回傳 RedirectResponse 是常見模式。

後續步驟

Validation

在回傳回應前,確認以驗證檢查輸入資料的方式。
最後修改於 2026年8月2日