2013-05-02 99 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