我在表单中使用POST方法提交值。这是我的表单代码:
<form action="{{ url('/') }}" method="POST">
<input type="hidden" name="value1" value="one" />
<input type="hidden" name="value2" value="two" />
<input type="submit" value="SEND!" />
</form>
和router.php代码:
Route::get('/', function()
{
return View::make('index');
});
Route::post('/', function()
{
$data = Input::all();
var_dump($data);
});
每次按下SEND按钮时它是否显示索引文件。当我尝试评论get方法时。现在它显示MethodNotAllowedHttpException
错误。在错误消息上,它显示请求方法是GET
我现在该怎么办?那是一个错误吗?或者我的剧本出了什么问题?
答案 0 :(得分:1)
请参阅https://github.com/laravel/framework/issues/1804。
我所看到的是,Laravel通过重定向到没有带代码301的'/'的URL来删除URL中的所有尾随'/'。您的浏览器将使用GET请求而不是新的POST请求来跟随此重定向。
发布到任何带尾随'/'的网址时,我遇到了同样的问题。你为什么不处理像'/ post'这样的其他网址来发帖,看看这是不是真正的问题?
答案 1 :(得分:0)
您使用的是哪个版本的Laravel? Laravel v4附带了CSRF(跨站点请求伪造)保护。如果您使用_token
方法,则需要通过让Laravel生成一个隐藏的Form::token()
字段来使用Form::open()
相反,它会为你添加令牌字段。 Laravel将自动查找该_token字段,如果找不到,或者不是正确的令牌,它将抛出异常。
编辑:查看app /目录中的Filters.php,了解有关CSRF过滤器的更多信息。