2015-04-17 144 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