首页 > 解决方案 > The POST method is not supported for this route. Supported methods: GET, HEAD. Laravel

问题描述

I have a problem with my edit page. When I submit I get this error:

The POST method is not supported for this route. Supported methods: GET, HEAD.

I have no clue where it comes from as I am pretty new to Laravel.

routes(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');

});

Controller:

 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

标签: phplaravel

解决方案


有多种方法可以处理此问题:

  1. 如果您坚持使用PUT,您可以将表单操作更改为POST并添加一个method_field具有值PUT和隐藏 csrf 字段的隐藏项(如果您使用的是刀片,那么您只需要添加@csrf_field{{ method_field('PUT') }})。这样表单将接受请求。

  2. 您可以简单地将路由和表单方法更改为POST. 它会正常工作,因为您是定义路线而不使用资源组的人。


推荐阅读