表格提交不适用于Laravel

时间:2013-11-12 19:23:42

标签: php laravel laravel-4

我在表单中使用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

enter image description here

我现在该怎么办?那是一个错误吗?或者我的剧本出了什么问题?

2 个答案:

答案 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过滤器的更多信息。