web-dev-qa-db-ja.com

POSTメソッドはこのルートではサポートされていません。サポートされているメソッド:GET、HEAD。Laravel

編集ページに問題があります。送信すると、次のエラーが発生します。

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');
    }

enter image description here

14
JohnSmith2521

(MCAMARAからの)LaravelLocalizationのようなベンダープラグインでRoute :: groupを使用している場合、POSTルートをこのグループの外に置く必要があります。このプラグインを使用したPOSTルートで問題が発生したため、これらのルートをRoute :: groupの外に置くことで解決しました。

1
Paulo Cardozo

こんにちはあなたはすべてのルートを書く必要はありません 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>
0
Anoop P S

これを修正する簡単な方法は、これをフォームに追加することです。

{{ 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();
}
0
idrissAbbou

私はURLの最後のスラッシュを削除しただけで機能し始めました... /managers/games/id/Push/から:

$http({
  method: 'POST',
  url: "/managers/games/id/Push",

laravel 5.8?

0
Harry Bosh

データベースにシーダーがある場合は、php artisan migrate:fresh --seedを実行します。

0
Shane Kelly

私にも同様の問題があり、唯一の解決策は開発環境として使用するvagrantを再起動することでした。それ以外に、単一の職人ではなく、composerコマンドは役に立ちませんでした。

0
darko99

主にこのタイプのエラーが生成されます。1。まずコードを確認し、コードで@ csrfを定義します。

<form method ="post" action={{url('project'')}}
   @csrf
   ...... 

2.間違った変数名を定義すると、そのときにこの種の問題が発生しました。

例データベースフィールド名が「xyz」で、「wxyz」を使用する場合

3.メソッドの形式が間違っている場合は、メソッドをチェックしてください。例<form method="post">

0
Vinit Dabhi

フォームに@method( 'PUT')を追加します

exp:

<form action="..." method="POST">

@csrf  

@method('PUT')



</form>
0
pezhman vaziri