2012-10-29 38 views
2

我們正在Symfony2上開發兩個獨立的站點,並且在處理提交的表單時遇到了一個奇怪的問題。當發佈表單時,getRequest()返回「GET」

這兩個網站都有一個操作,用於顯示錶單和處理提交。由於它處理GET和POST請求,因此將檢查$this->getRequest()->getMethod()。如果是GET,我們將顯示錶單。如果它是POST,我們將它堅持到一個實體中。

但是,即使發佈數據,getMethod()似乎總是返回GET。我知道請求方法應該是POST,因爲瀏覽器的網絡檢查員說它發送表單作爲POST請求,並且var_dump($_POST);輸出我們剛剛提交的表單的內容。

這些站點運行在不同的服務器上,都是CentOS 6.3。我有第三個類似的服務器運行第三個站點,處理提交罰款。什麼可能導致這個?

+0

通過子請求顯示錶單嗎? –

+0

@elnur:實際上。我們能不能通過子請求訪問主要請求? – Kaivosukeltaja

回答

3

我已經有過這樣的問題幾次,並嘗試了不同的方法。這是我的最後一個:

public function formAction(Request $request) 
{ 
} 
{% render 'Bundle:Controller:form' with {'request': app.request} %} 

請注意,你需要得到該請求在這種情況下,一個參數 - 而不是從容器中獲取它。如果你習慣上使用Symfony,那麼你已經這麼做了。

如果您能找到解決此問題的更好方法,我很想知道它。 :)

+0

謝謝你,完美的作品! – Kaivosukeltaja

+0

這很常見......我花了2小時試圖弄清楚......現在我記得。我爲此打開了一個錯誤,沒有做任何事情:https://github.com/symfony/symfony/issues/7551 – jsgoupil