跳到內容

如何將請求轉發到另一個控制器

編輯此頁面

雖然不是很常見,您也可以使用 AbstractController 類別提供的 forward() 方法,在內部轉發到另一個控制器。

這不是重新導向使用者的瀏覽器,而是建立一個「內部」子請求並呼叫定義的控制器。forward() 方法會傳回從控制器傳回的 Response 物件

1
2
3
4
5
6
7
8
9
10
11
public function index(string $name): Response
{
    $response = $this->forward('App\Controller\OtherController::fancy', [
        'name'  => $name,
        'color' => 'green',
    ]);

    // ... further modify the response or return it directly

    return $response;
}

傳遞給方法的陣列會變成結果控制器的引數。目標控制器方法可能如下所示

1
2
3
4
public function fancy(string $name, string $color): Response
{
    // ... create and return a Response object
}

就像為路由建立控制器時一樣,fancy() 方法的引數順序並不重要:匹配是按名稱完成的。

本作品,包括程式碼範例,依據 Creative Commons BY-SA 3.0 授權條款發佈。
目錄
    版本