2011-04-06 84 views
0

我想將id從一個動作傳遞給下一個動作,但我不希望它在URL中看到。有沒有辦法隱藏它?Symfony/Routing:使用POST來避免URL中的查詢參數

使用Symfony的,我已經創建/signup/done 當處理的形式,我想重定向到signupSuccess行動,並通過最近成立的ID以備將來使用,其網址應該是一個的註冊頁面進行。所以我用...

$this->redirect('@signup_done?id=' . $sign_up->getId()); 

路由如下:

signup_done: 
    url: /signup/done 
    param: { module: SignUp, action: signupDone } 

我已經避免了:ID在最後,因爲我不希望它在URL中。 但由此產生的URL是/signup/done?id=1

就像一個實驗,我試圖把它放在模板上。

<?php echo link_to('Sign-up again', '@signup_done?id=1', 'post=true') ?> 

即使使用post,查詢參數也會出現在URL中。

需求是:我想將ID從一個動作傳遞給下一個動作,但我不希望它在URL中看到。有沒有辦法隱藏它?

回答

1

我設定的ID作爲使用$request->setParameter('id', $id)在請求的參數,它的下一個動作是可用的。

這保持了URL乾淨。

1

如果你想發表,你需要一個形式。早在symfony1.2版本有,你可以打電話給助手和讓你這樣 - 但他們對於推動促進良好的代碼被拆除。

根據您希望再次註冊的文本的樣子,您可以創建一個簡單的表單和一個提交按鈕,或創建一個鏈接,附加一個點擊監聽器,並通過JS創建一個表單,最後發表它。

您傳遞給路由的任何參數在url_forlink_to等都以get參數結束。

+0

但我用的link_to提到的職位=真ATTRIB不會觸發形式通過JS提交。只是超鏈接似乎具有查詢參數,頁面的URL也是如此。我的路由定義出錯了嗎? – Prasad 2011-04-07 06:16:33