1. ホーム
  2. php

[解決済み] RouteCollection.php の 219 行目で MethodNotAllowedHttpException が発生しました。

2022-01-29 03:25:52

質問

投稿を保存すると、次のようなエラーが発生します。

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を使っていますが、1日経っても解決できません。

解決方法は?

投稿の更新時にメソッドを設定しているので patch を実行する必要があります。 フォームを開く をクリックすると、その方法を使用できます。

{!! Form::open(['method' => 'patch']) !!}

を使用していない場合は Form クラスがあることを確認するだけでもよいでしょう。 という隠し要素で _method をフォームの下に配置します。

<input name="_method" type="hidden" value="PATCH">

同様に、このデータをAJAXで送信する場合、単に _method キーをペイロードに設定します。 'PATCH' を使用して、POSTでリクエストを送信します。一部のブラウザ( IE 7/8 ) は、XMLHttpRequest による PATCH HTTP をサポートしていません。

もう一つの方法は、代わりにPOSTデータを受け入れるようにルートを変更することです。

Route::post('posts/store-new-post', 'PostsController@store');
Route::post('posts/{slug}', 'PostsController@update');