RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException
MethodNotAllowedHttpException in RouteCollection.php line 219
当我存储 post 时出现此错误
MethodNotAllowedHttpException in RouteCollection.php line 219:
什么会导致这个问题??
Routes.php:
Route::get('home', 'PostsController@index');
Route::get('/', 'PostsController@index');
Route::get('index', 'PostsController@index');
Route::get('posts', 'PostsController@index');
Route::get('post/{slug}/{id}', 'PostsController@show');
Route::get('posts/sukurti-nauja-straipsni', 'PostsController@create');
Route::patch('posts/store-new-post', 'PostsController@store');
Route::get('post/{slug}/{id}/edit', 'PostsController@edit');
Route::patch('posts/{slug}', 'PostsController@update');
Route::get('tags/{tags}', 'TagsController@show');
Route::get('categories/{categories}', 'CategoriesController@show');
// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
我正在使用 Laravel 5.1,我一天都弄不明白..
由于您将 post 的更新方法设置为 patch
,请确保您 open your form 使用该方法:
{!! Form::open(['method' => 'patch']) !!}
如果您不使用 Form
class,您也可以确保在表格下方有一个 hidden element called _method
:
<input name="_method" type="hidden" value="PATCH">
同样,如果您通过 AJAX 发送此数据,只需在通过 POST 发送请求之前将 _method
密钥添加到设置为 'PATCH'
的有效负载.某些浏览器 (IE 7/8) 不支持通过 XMLHttpRequest
修补 HTTP
您的另一个选择是更改您的路由以接受 POST 数据:
Route::post('posts/store-new-post', 'PostsController@store');
Route::post('posts/{slug}', 'PostsController@update');
我也遇到了这个问题,但在我的情况下,结果证明是由于将这些多个路由设置为相同的控制器操作:
Route::get('/', 'PostsController@index');
Route::get('posts', 'PostsController@index');
这对于 GET 请求工作正常,但我将我的表单设置为提交给自己——即。我没有在我的表单上指定一个动作——这意味着如果我在 /posts
它工作(因为我为该路由设置了一个适当的 POST 端点),但是从主页/
它总是会给我您描述的 MethodNotAllowedHttpException(因为没有为此设置 POST 数据路由)。花了很长时间才弄明白为什么表格有时有效有时无效。
最后我通过将 /
的路由更改为重定向来修复它,如下所示:
Route::get('/', function(){
return redirect('posts');
});
...虽然我想明确地在表单上设置一个动作(或者也为 /
设置一个 POST 路由)也可以完成这项工作。
我是 Laravel 的新手,所以很可能还有比上述任何一种方法都更好的其他方法!
导航到 vendor/laravel/framework/src/Illuminate/Foundation/Middleware/VerifyCsrfToken.php 并在函数 isReading()method.
中添加您想要的路由方法 (POST,GET)
希望这可能对某人有所帮助。
检查您的表单标签
<form action="/path/" method="post">
这里的“/path/”应该是“/path”,不要用“/" 最后。
尝试添加到您的模型中:
protected $guarded = ['_token'];
在我的例子中,末尾有一个额外的“/”,例如:POST /api/clients/
我已将其删除并有效:POST /api/clients
当我存储 post 时出现此错误
MethodNotAllowedHttpException in RouteCollection.php line 219:
什么会导致这个问题??
Routes.php:
Route::get('home', 'PostsController@index');
Route::get('/', 'PostsController@index');
Route::get('index', 'PostsController@index');
Route::get('posts', 'PostsController@index');
Route::get('post/{slug}/{id}', 'PostsController@show');
Route::get('posts/sukurti-nauja-straipsni', 'PostsController@create');
Route::patch('posts/store-new-post', 'PostsController@store');
Route::get('post/{slug}/{id}/edit', 'PostsController@edit');
Route::patch('posts/{slug}', 'PostsController@update');
Route::get('tags/{tags}', 'TagsController@show');
Route::get('categories/{categories}', 'CategoriesController@show');
// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
我正在使用 Laravel 5.1,我一天都弄不明白..
由于您将 post 的更新方法设置为 patch
,请确保您 open your form 使用该方法:
{!! Form::open(['method' => 'patch']) !!}
如果您不使用 Form
class,您也可以确保在表格下方有一个 hidden element called _method
:
<input name="_method" type="hidden" value="PATCH">
同样,如果您通过 AJAX 发送此数据,只需在通过 POST 发送请求之前将 _method
密钥添加到设置为 'PATCH'
的有效负载.某些浏览器 (IE 7/8) 不支持通过 XMLHttpRequest
您的另一个选择是更改您的路由以接受 POST 数据:
Route::post('posts/store-new-post', 'PostsController@store');
Route::post('posts/{slug}', 'PostsController@update');
我也遇到了这个问题,但在我的情况下,结果证明是由于将这些多个路由设置为相同的控制器操作:
Route::get('/', 'PostsController@index');
Route::get('posts', 'PostsController@index');
这对于 GET 请求工作正常,但我将我的表单设置为提交给自己——即。我没有在我的表单上指定一个动作——这意味着如果我在 /posts
它工作(因为我为该路由设置了一个适当的 POST 端点),但是从主页/
它总是会给我您描述的 MethodNotAllowedHttpException(因为没有为此设置 POST 数据路由)。花了很长时间才弄明白为什么表格有时有效有时无效。
最后我通过将 /
的路由更改为重定向来修复它,如下所示:
Route::get('/', function(){
return redirect('posts');
});
...虽然我想明确地在表单上设置一个动作(或者也为 /
设置一个 POST 路由)也可以完成这项工作。
我是 Laravel 的新手,所以很可能还有比上述任何一种方法都更好的其他方法!
导航到 vendor/laravel/framework/src/Illuminate/Foundation/Middleware/VerifyCsrfToken.php 并在函数 isReading()method.
中添加您想要的路由方法 (POST,GET)希望这可能对某人有所帮助。
检查您的表单标签
<form action="/path/" method="post">
这里的“/path/”应该是“/path”,不要用“/" 最后。
尝试添加到您的模型中:
protected $guarded = ['_token'];
在我的例子中,末尾有一个额外的“/”,例如:POST /api/clients/ 我已将其删除并有效:POST /api/clients