繁体   English   中英

Laravel 5.5-使用POST方法时出现MethodNotAllowedHttpException

[英]Laravel 5.5 - MethodNotAllowedHttpException when using POST method

我创建了过滤器以从数据库获取数据。 当我使用GET方法时,可以使用但使用POST方法时,出现错误:

Symfony \\组件\\ HttpKernel \\异常\\ MethodNotAllowedHttpException

我花了几个小时寻找解决方案,但似乎我在这里遗漏了一些东西。

为了进行测试,我尝试直接在路线中获得结果,但这仍然是一个问题。

这可行。

<?php
use App\test;
Route::get('/', function () {
    $test = test::all();
return $test;
});

这行不通。

<?php
use App\test;
Route::post('/', function () {
    $test = test::all();
return $test;
});

这个

use App\test;
Route::post('/', function () {
    $test = test::all();
return $test;
});

应该始终是Request的实例,因此您不能像GET这样直接在浏览器中访问它,而必须向其中发布一些表单数据。 因此最好将其重命名为以下内​​容:

use App\test;

Route::post('/test', function (Request $request) {
    $test = test::all();
return $test;
});

$request保留您的表单数据

Route::get()Route::post()定义了指定http方法的路由处理程序。

如果仅定义此路线:

Route::post('/', function () {
    $test = test::all();
    return $test;
});

然后,您必须确保对该URL的所有调用均使用POST方法。 如果使用GET方法对该URL进行请求,则将获得MethodNotAllowedHttpException异常,因为您仅定义了POST方法处理程序。

您似乎忘记了{{csrf_field()}}。 将此添加到您的窗体。

如果要发布的数据没有csrf,则在laravel 5.5中,您会看到此错误。

请注意,如果您要编写发布路线,请在测试时确保将数据发布到页面上,否则将出错。

发布路由不能仅通过调用url进行测试,方法应为post。 如果您使用邮递员检查路线URI,它将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM