2013-05-02 48 views
1

我試圖在使用Silex的網站上創建表單,但是當我發佈數據時,它給了我一個405錯誤。我沒有使用Silex表單生成器。只是HTML。 Silex中是否存在阻止發佈數據的設置? GET工作正常。Silex在表單上提交405錯誤提交

HTML:

<form name='login' action='' method='POST'> 
    Username: <input type='text' name='user' value=''><br /> 
    Password: <input type='password' name='pass' value=''><br /> 
    <input type='submit' name='submit' value='Submit'> 
</form> 
+1

您是否爲POST定義了路由? – 2013-05-02 09:57:14

+0

你的意思是在Silex?我不知道該怎麼做。 我留下了行動空白,所以它應該發佈到同一頁面,我可以在那裏處理它。 – James 2013-05-02 10:48:11

回答

0

HTTP的405個狀態碼意味着方法不被允許,在你的情況下,它意味着你已經定義了該URL路徑,但它不接受POST請求。這是怎麼回事大概是這樣的:

$app->get("/myform", function() use ($app) {}); 

即使URL本身相匹配,這將不匹配任何東西,但GET,一切將導致405你有兩個選擇:

  1. 創建$app->post()
  2. 一個POST控制器創建與$app->match()

,可同時接收控制器,如果你走的第二條路徑,我建議以下模式:

$app->match("/myform", function (Request) use ($app) { 
    if ($request->isMethod("post")) { 
     // process post data 
    } 
}); 
+0

如果我將其從$ app-> get更改爲$ app-> match,則無論是否提交數據,都會收到500內部服務器錯誤。 – James 2013-05-03 02:00:49

+0

請啓用調試模式('$ app [「debug」] = true'),這樣您會收到一條錯誤消息,告訴您有什麼問題。 – Maerlyn 2013-05-03 06:45:56