2015-04-17 141 views
3

我想重定向并将我的请求发送到另一个路由,但此方法不起作用。Symfony重定向请求

return $this->redirect($this->generateUrl(
    'admin_platform_create', 
    array('request' => $request) 
)); 

当我抵达成admin_platform_create没有通过,如果

public function createAction(Request $request) 
    {  
     if ($request->getMethod() == 'POST') 
      { 

虽然这是工作,

return $this->forward('AdminPlatformBundle:Manage:edit', 
    array('request' => $request)); 

这不是我所需要的,因为它不是写新的网址。

感谢您的帮助!

+1

为什么你要传递的Request对象作为参数? 'Request'对象表示当前的请求。 – COil

+2

浏览器通过为新位置发出_GET_请求来遵循重定向 - 因此,您不能期望此后可以访问任何POST数据。 (作为解决方法,您可以尝试将接收到的POST数据存储到会话中,重定向,然后在目标处再次读取会话中的数据。虽然对于大量请求,这可能会影响性能。) – CBroe

+0

如果我不'将Request对象作为参数传递给我: 控制器“Admin \ PlatformBundle \ Controller \ ManageController :: createAction()”要求您为“$ request”参数提供一个值(因为没有默认值或因为在这之后有一个非可选参数)。 – Hewyn

回答

9

如果您正在使用的Symfony 2.6或更高版本,你可以做到这一点:

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

它的工作原理。 307代码保留请求方法,并允许使用相同参数创建新的POST请求。 – scandel