編集ページに問題があります。送信すると、次のエラーが発生します。
POSTメソッドはこのルートではサポートされていません。サポートされているメソッド:GET、HEAD。
私はLaravelにかなり慣れているので、どこから来たのかわかりません。
ルート(web.php):
Route::group(['middleware' => 'auth'], function () {
Route::get('/', 'ProjectController@index');
Route::get('/projects/{id}', 'ProjectController@show');
Route::post('/create','ProjectController@store');
Route::get('/create', 'ProjectController@create');
Route::get('/projects/{id}/delete', 'ProjectController@destroy');
Route::put('/edit','ProjectController@update');
Route::get('/projects/{id}/edit', 'ProjectController@edit');
});
コントローラ:
public function edit($id)
{
return view('project.edit',[
'project' => Project::find($id)
]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$project = Project::find($request->id);
$project->project_name = $request->input('project_name');
$project->client = $request->input('client');
$project->description = $request->input('description');
$project->time_span = $request->input('time_span');
$project->text_report = $request->input('text_report');
$project->created_by = $request->input('created_by');
$project->save();
return redirect('/')->with('success', 'Project aangepast');
}
(MCAMARAからの)LaravelLocalizationのようなベンダープラグインでRoute :: groupを使用している場合、POSTルートをこのグループの外に置く必要があります。このプラグインを使用したPOSTルートで問題が発生したため、これらのルートをRoute :: groupの外に置くことで解決しました。
こんにちはあなたはすべてのルートを書く必要はありません https://laravel.com/docs/5.8/controllers check:Resource Controllerによって処理されるアクションセクション
HTMLフォームはPUT、PATCH、またはDELETEリクエストを作成できないため、非表示の_methodを追加する必要があります。 n laravelからのデータを投稿するときは、
<form action="/foo/bar" method="POST">
@method('PUT')
</form>
これを修正する簡単な方法は、これをフォームに追加することです。
{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">
その後、更新メソッドは次のようになります。
public function update(Request $request, $id)
{
$project = Project::findOrFail($id);
$project->name = $request->name;
$project->description = $request->description;
$post->save();
}
私はURLの最後のスラッシュを削除しただけで機能し始めました... /managers/games/id/Push/
から:
$http({
method: 'POST',
url: "/managers/games/id/Push",
laravel 5.8?
データベースにシーダーがある場合は、php artisan migrate:fresh --seedを実行します。
私にも同様の問題があり、唯一の解決策は開発環境として使用するvagrantを再起動することでした。それ以外に、単一の職人ではなく、composerコマンドは役に立ちませんでした。
主にこのタイプのエラーが生成されます。1。まずコードを確認し、コードで@ csrfを定義します。
<form method ="post" action={{url('project'')}}
@csrf
......
2.間違った変数名を定義すると、そのときにこの種の問題が発生しました。
例データベースフィールド名が「xyz」で、「wxyz」を使用する場合
3.メソッドの形式が間違っている場合は、メソッドをチェックしてください。例<form method="post">
フォームに@method( 'PUT')を追加します
exp:
<form action="..." method="POST">
@csrf
@method('PUT')
</form>