发布请求在 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 异常处理程序中不起作用

护照身份验证在 laravel 5.3 中不起作用

为啥预构建 cors 策略配置在 Laravel 7 应用程序中不起作用?

ng-submit 在 Laravel PHP 框架中不起作用

为啥嵌套循环在 laravel 中不起作用