2012-12-03 33 views
1

我有一個Symfony 1.4應用程序,我繼承了它來維護和更新。有一件事我無法理解/搞清楚如何在加載和帖子中使用相同的模板/動作名稱。如何爲get和post使用相同的動作/模板?

從Struts2背景來看,我可以對兩種方法重複使用相同的動作,但有一個指向「輸入」方法的指向,而帖子指向「執行」方法。但我似乎無法在Symfony中找到類似的工作流程。

鑑於get和post都使用了相同的模板,並且我想使用相同的動作名稱,我怎樣才能爲每種類型指定不同的方法名稱?

例如,對於一個登錄表單,我想創建一個登錄操作,用一個基本顯示模板的「輸入」方法,並在提交時,它將轉到執行方法以在重定向之前驗證數據或者重新顯示帶有錯誤的表單。

我意識到我可以在我的執行方法的頂部放入一個if($ request-> isMethod('POST')),但我認爲必須有一個更好/更傳統的方法來做到這一點。我認爲symfony中必須有一些東西允許這樣做,但我一直無法找到它。

任何人都可以指向正確的方向嗎?

回答

1

你在找什麼是路由。您可以在Symfony中路由HTTP請求方法。

這裏的文檔:http://symfony.com/legacy/doc/reference/1_4/en/10-Routing

,你會想要做的一個例子是結構是這樣的:

login_input: 
    url: /login 
    class: sfRequestRoute 
    param: { module: login, action: input } 
    requirements: { sf_method: get } 

login_execute: 
    url: /login 
    class: sfRequestRoute 
    param: { module: login, action: execute } 
    requirements: { sf_method: post } 
+0

真棒。謝謝!這是使用Symfony的典型/常規方式,還是有其他推薦方法? –

+0

這是推薦的方法。 –

+0

我剛剛注意到你的配置中有一件事,模塊名稱是「動作」(即:登錄/註銷/等)。這意味着我不能再將多個動作組合在一起,因爲每個動作都分爲單獨的模塊。例如,我通常喜歡在一個名爲「security」的包中將登錄,註銷,密碼重置。但是現在看來,我必須讓每個模塊/目錄都有一個。有什麼辦法可以將它們組合在一起嗎? –

相關問題