发布请求在 Laravel 中不起作用
Posted
技术标签:
【中文标题】发布请求在 Laravel 中不起作用【英文标题】:Post request not working in Laravel 【发布时间】:2018-10-06 02:57:57 【问题描述】:我是 Laravel 的新手,正在尝试做一个简单的 post
请求,但它不起作用。重定向到/o2
后显示object not found
。有人可以解释一下吗?我也在使用CSRF Token
,但事情不正常。使用 Laravel v5.2。
Route::get('/o1', function()
echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
);
Route::post('/o2', function()
echo "It works";
);
【问题讨论】:
【参考方案1】:您正尝试在浏览器中访问发布路线以打印表单。这是行不通的。您需要创建一个获取路径来打印表单,然后将操作设置为发布路径。试试这样的:
Route::get('/o1', function()
echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
);
Route::post('/o2', function(Request $request)
echo $request->all();
);
【讨论】:
我在意识到问题后修改了问题,请看一下。它仍然无法正常工作。 你在用apache吗? 我正在使用 Xampp。 这可能是虚拟主机/htaccess的问题。看这里:***.com/questions/17129612/… 这里:***.com/questions/31814576/…【参考方案2】:当你得到 MethodNotAllowedHttpException 时,你是如何调用这个路由的?
此发布请求应由您正在创建的实际表单调用。 并且一般不应该返回实际的表单,而是持久化数据,然后将用户重定向到页面以显示结果。
所以一般来说,你会有一个 get 和一个 post:
Route::get('/o1', function()
echo '<form method="post" action="/o2"><input name="_token" value="' . csrf_token() . '" type="hidden"><button type="submit" value="Submit">Submit</button></form>';
);
Route::post('/o1', function()
// persist your form here
);
我强烈建议为此使用控制器。 https://laravel.com/docs/5.6/controllers
【讨论】:
我对上面的问题做了修改,还是不行,请看上面。以上是关于发布请求在 Laravel 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 PUT 请求发送 multipart/form-data 在 Laravel 中不起作用
CSRF 令牌在带有 Ajax 请求的 Laravel 5.1 异常处理程序中不起作用
为啥预构建 cors 策略配置在 Laravel 7 应用程序中不起作用?