2012-07-09 66 views
1

我正在移植使用Symfony框架的遺留系統。我幾乎沒有Symfony的經驗。Symfony路由到外部站點,包括會話值

我需要覆蓋到外部網站的行動的路線,幷包括會話值作爲參數。

這是當前routing.yml代碼

mysystemtool: 
    url: /:module/mysystemtool/tool/* 
    param: { action: mysystemtool } 

,我需要重定向到URL像http://thirdpartyurl.com/?session_param=session_value

任何想法如何做到這一點?

+0

哪個Symfony版本? Legacy建議使用1.x,但是,您將其命名爲「更安全」。 – hakre 2012-07-09 22:55:49

+0

我不知道我明白。路由用於將傳入的URI映射到控制器/操作。如果您需要生成外部URL,那麼您將需要您自己的邏輯/方法,因爲這不在路由組件的範圍內。 – MDrollette 2012-07-09 22:56:54

回答

10

你不能路由它堅持因爲路由只適用於內部的東西。也就是說,你可以在控制器重定向:

public function executeMysystemtool(sfWebRequest $request) { 

    $param = $this->getUser()->getAttribute('session_param', 'default_value'); 
    $this->redirect('http://thirdpartyurl.com?session_param='.$param); 
} 

當然,你需要你的actions.class.php一個模塊中設置,使您可以編寫此操作,但如果現有的動作,那麼你應該只需要改變的邏輯那個行動。

+0

關於這一點的精彩之處在於,當您不希望Symfony混淆URL時,它也適用於內部內容。例如在http://stackoverflow.com/questions/1496975/symfony-redirect-with-2-parameters如果你不希望所有的GET參數被/堆疊/成斜線/ like /那 – user14764 2014-10-28 08:42:19

+0

@ user14764:那麼在這種情況下,您還可以更改路由規則以附加額外的參數作爲查詢字符串:-) – prodigitalson 2015-06-02 15:31:05