发布请求在Laravel中不起作用

时间:2018-04-25 15:01:54

标签: laravel

我是Laravel的新手,我正在尝试做一个简单的post请求,但它无效。重定向到object not found后会显示/o2。有人会对此有所了解吗?我也在使用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";
});

2 个答案:

答案 0 :(得分:1)

您正尝试在浏览器中访问帖子路线以打印表单。这不会起作用。您需要创建一个get路径来打印表单,然后将操作设置为post route。尝试这样的事情:

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();
});

答案 1 :(得分:0)

当您收到MethodNotAllowedHttpException时,如何调用此路由?

此帖子请求应由您正在创建的实际表单调用。 并且通常不应返回实际表单,而是保留数据,然后将用户重定向到页面以显示结果。

所以一般来说,你会有一个获得和一个帖子:

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