2013-03-18 60 views
0

這可以工作,但它很混亂。我一直在使用參數包,但沒有像我的代碼那麼好。更好的方式來編碼這個Symfony2 URL重定向

我只想重定向到同一頁面,並刪除查詢字符串,但編寫它比這更好:

$r = $this->request; 

$url = $r->getUri(); 

$replace = "abc=" . $r->query->get('abc'); 
$url = str_replace("?".$replace, "?", $url); 
$url = str_replace("&".$replace, "", $url); 

$response = new RedirectResponse($url); 
$this->event->setResponse($response); 

回答

5

刪除整個查詢字符串:

$response = new RedirectResponse($request->getPathInfo()); 

從查詢字符串中刪除參數:

$route = $request->get('_route'); 
$params = array_merge(
    $request->get('_route_params'), 
    $request->query->all() 
); 

unset($params['param_to_remove']); 
// or $params['param_to_remove'] = null; 

$response = new RedirectResponse($this->router->generate($route, $params); 
+0

謝謝,但我d沒有看到如何刪除其中一個查詢sting值 – user2143356 2013-03-19 07:59:12

+0

更新了答案。 – 2013-04-16 18:23:17

+0

謝謝,但它不會工作,因爲$ request-> get('_ route_params')沒有得到查詢字符串參數,只有Symfony2路由參數。 – user2143356 2013-04-16 18:44:03

相關問題