如何将请求转发到另一个控制器
虽然不是很常见,但你也可以使用 forward()
方法在内部转发到另一个控制器,该方法由 AbstractController 类提供。
这不会重定向用户的浏览器,而是创建一个“内部”子请求并调用定义的控制器。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 许可协议获得许可。