Symfony 2 使用 POST 重定向

2022-08-30 22:41:32

在Symfony 2中,我的控制器中有以下代码:

// prepare to render the seller info panel
$response = array(
    'data' => $data,
);

// render the seller info panel
return $this->redirect($this->generateUrl('route', $response));

其中路由是:

route:
    pattern:  /listing/complete/{data}
    defaults: { _controller: FooBundle:Foo:action }
    requirements:
        _method:  POST

这不起作用,因为重定向正在发出GET请求。我也尝试过这种模式,但它与路线不匹配:

route:
    pattern:  /listing/complete
    defaults: { _controller: FooBundle:Foo:action }
    requirements:
        _method:  POST

我发现路由文档没有帮助。有没有办法让重定向发出POST请求?路由会是什么样子,我是否必须在控制器中执行任何操作才能实现它?


答案 1

执行POST请求重定向的最新方法(从Symfony 2.6开始)很简单:

return $this->redirectToRoute('route', [
    'request' => $request
], 307);

代码保留请求方法,而是快捷方式方法。307redirectToRoute()


答案 2

重定向POST请求是不可能的,因为浏览器必须重新发送POST数据(它没有)。在这种情况下,您应该做的是使用转发。


推荐