如何將請求轉發到另一個控制器
雖然不是很常見,您也可以使用 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 授權條款發佈。