首页 > 解决方案 > Laravel 应用程序编辑显示 MethodNotAllowedHttpException

问题描述

<form action="{{ route[('update'), $user->id]}}" method="post" style="border:1px solid #ccc">
{{ method_field('POST') }}

这是我编辑和更新的两条路线。

Route::get("{id}/edit", 'HomeController@edit')->name('edit');
Route::post('update', 'HomeController@update')->name('update');

这是我的控制器

public function update(Request $request, $id){
    $arr = User::find($id);
        $name->name = $request->input('name');
        $email->email = $request->input('email');
        $password->password = $request->input('password');
    $arr->save();
return redirect('/');
}

这是我的编辑控制器

public function edit($id){
    $user_id = auth()->user()->id;
    $user = User::find($user_id);
    return view("edit")->with('user');
}

标签: phplaravellaravel-5

解决方案


您需要在 url 路由中指定参数。

Route::post('update/{id}', 'HomeController@update')->name('update');

你的路线也不正确。它应该是

<form action="{{ route('update', [  'id' =>$user->id])}}" method="post" style="border:1px solid #ccc">

此外,不需要method_field()用于POST请求,它们用于PATCHDELETE请求。

附带说明一下,如果您的目标是更新现有记录,建议使用PATCHrequest. (只是一种标准化的方式)


推荐阅读