RouteCollection.php 第 218 行 Laravel 5.2 中的 MethodNotAllowedHttpException
MethodNotAllowedHttpException in RouteCollection.php line 218 Laravel 5.2
我必须通过浏览器访问 PUT 路由并获取 json 对象,但 L5.2 向我显示 MethodNotAllowedHttpException 错误我该怎么做才能解决这个问题?
我的URLhttp://laravel5.restapi.dev/a?_method=put
我的route:list
route.php
<?php
Route::put('/a', function () {
return view('welcome');
});
输出
Whoops, looks like something went wrong.
MethodNotAllowedHttpException in RouteCollection.php line 218:
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('PUT')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('PUT')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 821
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 49
at Debugbar->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 53
PUT 方法仅在您的表单方法是 POST 并且您添加值为 PUT 的 _method 输入字段时才有效。
<form method="post">
<input type="hidden" name="_method" value="PUT">
</form>
不允许 PUT 请求,因为您正在使用 Route::post($uri, $callback)
。
您需要将路由指定为 Route::put($uri, $callback)
或(如果您还需要匹配其他请求):
Route::match(['post', 'put'], '/a', function () {
// for post & put requests
});
Route::any('/a', function () {
// for all methods
});
如评论和其他答案中所述,PUT 请求必须是 POST 具有附加参数 _method=PUT
.
的请求
你也可以使用
{{ method_field('PUT') }}
在您的表单中使用 method = post 。以便 method_field 将其转换为 put
然后在你的 routes.php
Route::put(.....);
或
Route::any(...);
我必须通过浏览器访问 PUT 路由并获取 json 对象,但 L5.2 向我显示 MethodNotAllowedHttpException 错误我该怎么做才能解决这个问题?
我的URLhttp://laravel5.restapi.dev/a?_method=put
我的route:list
route.php
<?php
Route::put('/a', function () {
return view('welcome');
});
输出
Whoops, looks like something went wrong.
MethodNotAllowedHttpException in RouteCollection.php line 218:
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('PUT')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('PUT')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 821
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 49
at Debugbar->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 53
PUT 方法仅在您的表单方法是 POST 并且您添加值为 PUT 的 _method 输入字段时才有效。
<form method="post">
<input type="hidden" name="_method" value="PUT">
</form>
不允许 PUT 请求,因为您正在使用 Route::post($uri, $callback)
。
您需要将路由指定为 Route::put($uri, $callback)
或(如果您还需要匹配其他请求):
Route::match(['post', 'put'], '/a', function () {
// for post & put requests
});
Route::any('/a', function () {
// for all methods
});
如评论和其他答案中所述,PUT 请求必须是 POST 具有附加参数 _method=PUT
.
你也可以使用
{{ method_field('PUT') }}
在您的表单中使用 method = post 。以便 method_field 将其转换为 put
然后在你的 routes.php
Route::put(.....);
或
Route::any(...);