跳到内容

如何将请求转发到另一个控制器

编辑此页

虽然不是很常见,但你也可以使用 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 许可协议获得许可。
目录
    版本