Fiz*_*izk 5 php laravel laravel-routing
我在Laravel的POST表单中遇到了一个奇怪的问题.
发送帖子请求时,我的Laravel会抛出一个MethodNotAllowedHttpException.在查看错误消息时,我可以看到Laravel认为我的请求是GET请求,但事实并非如此.
在查看错误的POST数据和GET数据时,Laravel似乎认为它们都是空的.这让我有点困惑,因为似乎某种重定向正在进行,错误的HTTP_REFERER是我发布的页面.
我之前遇到过这个问题,其中一个命名路由解决了我的问题,但我正在创建一个简单的CMS,因此使用了一个表单的模板,并且我不可能使用命名路由,而不允许用户使用使用Blade语法这是一个坏主意.
我的路线如下(简化为"Hello world"):
Route::post('/signup/add', function(){
echo "Hello world";
});
Run Code Online (Sandbox Code Playgroud)
http://pastebin.com/EsAeyHFx < - 完整routes.php
http://pastebin.com/ByHdUFcK < - 我的表格.没有什么花哨的,只有纯文本/ radiobuttons输入.没有HTML或任何特殊的东西.
更奇怪的是,我有另一种形式(登录表单)不会导致这种行为.
我一直在关注StackOverflow上的其他几个问题,但它们似乎最终都是将POST数据发送到GET路由的错误.这不是我的情况.
如果我将路由从POST改为GET,它可以正常工作.
我也尝试将表单的操作更改为GET并使用隐藏字段_method并将其设置为post - 没有成功.
有人可以告诉我这个例外是怎么回事以及如何修复它?
补充:经过一些实验,我发现当使用第三方软件(如Chrome扩展名Postman)并向页面发送POST请求时,它可以按照预期运行.
好吧,经过一些挖掘,在jsfiddle中制作表单,使用jQuery等,我发现了问题!
我的表单在action属性中有一个尾部斜杠,据说是不允许的.
解决方案只是将我的代码更改为action="/signup/add"而不是action="/signup/add/
伙计,我觉得自己很蠢......