如何把请求转发到另一个控制器
虽然不是很常见,你仍然可以很容易地通过forward()方法在内部转发到另一个控制器。与对用户浏览器的重定向不同,这种方法是产生一个“内部”子请求,然后调用定义好的控制器。forward()
方法返回Response
对象,这个Response对象是由那个新控制器返回的。
1 2 3 4 5 6 7 8 9 10 11 12 |
public function indexAction($name)
{
$response = $this->forward('AppBundle:Something:fancy', array(
'name' => $name,
'color' => 'green',
));
// ... further modify the response or return it directly
// ... 进一步调整响应,或直接返回之
return $response;
} |
传递到这个方法的数组,成为了后续控制器的参数。目标控制器方法,看上去可能像下面这样:
1 2 3 4 5 |
public function fancyAction($name, $color)
{
// ... create and return a Response object
// ... 创建并返回一个Response对象
} |
当为路由创建控制器时,fancyAction
的参数顺序不成为问题:因为匹配是通过参数名完成的。