此路由不支持 GET 方法.支持的方法:补丁



请我找不到问题出在哪里!

叶片

<form action="/profile/{{$user->id}}" enctype="multipart/form-data" method="post">
@csrf
@method('patch')

路线

Route::patch('/profile/{user}', 'ProfilesControler@update')->name('profile.update');

错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 GET 方法。支持的方法: 补丁。

编辑1-网络.php

Route::get('/', function () { return view('welcome'); }); 
Auth::routes(); 
Route::get('/p/create','postsController@create'); 
Route::get('/p/{posts}','postsController@show'); 
Route::post('/p','postsController@store'); 
Route::get('/profile/{user}/edit', 'ProfilesControler@edit')->name('Profile.edit'); 
Route::get('/Profile/{user}', 'ProfilesControler@index')->name('Profile.show');
Route::post('/profile/{user}', 'ProfilesControler@update')->name('profile.update')

试试这个:

<form action="/profile/{{$user->id}}" enctype="multipart/form-data" method="post">
@method('PATCH')
@csrf
</form>

还有一个提示始终使用route method表示路由,因为您在web.php中命名了路由,因此易于维护和调试

<form action="{{route('profile.update',['user' => $user->id])}}" enctype="multipart/form-data" method="post">
@method('PATCH')
@csrf
</form>

在此处阅读有关方法欺骗的更多信息

希望对您有所帮助。

谢谢。

注意:如果问题仍然存在,请尝试清除路由缓存php artisan route:clear

更改<form action="/profile/{{$user->id}}" enctype="multipart/form-data" method="post">

至 :<form action="/profile/{{$user->id}}" enctype="multipart/form-data" method="GET">

再试一次

注意:您无法使用 GET 上传图像,

编辑:为您的路线命名,然后使用它

比如:Route::post('/update', 'ProfilesControler@update');或者你可以将补丁切换到发布或获取

或 :Route::patch('/update', 'ProfilesControler@update')->name('update');

Route::patch('/update', 'ProfilesControler@update')->name('update');

在回答您的问题之前。让我们阅读一些事实,要执行resource方法,您必须遵循一些最佳实践。

Uri必须遵循此模式/controllerName/methodName/{unique_identifier}

对于@index@store

Route::get('/profile/','ProfileController@index');
Route::post('/profile/','ProfileController@store');

以上两条路线相同,但方法不同。

对于@show

Route::get('/profile/{user_id}','ProfileController@show');

对于@create@edit

Route::get('/profile/create','ProfileController@create');
Route::get('/profile/edit/{user_id}','ProfileController@edit');

对于@update@destroy

Route::put('/profile/update/{user_id}','ProfileController@update');
Route::delete('/profile/destroy/{user_id}','ProfileController@destroy');

或者您可以使用

Route::post('/profile/update/{user_id}','ProfileController@update');
Route::post('/profile/destroy/{user_id}','ProfileController@destroy');

对于更新请求,您的method应该是PUT的;所以

<form method="POST">
@csrf
@method('PUT')
<!---whatever your code -->
</form>

{{ Form::open(array('url' => '/', 'method' => 'PUT')) }}
.... wathever code here
{{ Form::close() }}

注意:由于 HTML 表单仅支持POSTGET,因此PUTDELETE方法将通过自动添加_method隐藏字段来欺骗 到您的表单。

在您的情况下,method没有设置为路由接受PATCH方法,因此请检查您的@method('PATCH')指令是否在您的form中回显关联input element

,如下所示
<input name="_method" type="hidden" value="PATCH">

您必须将ProfilesControler更改为ProfileController,因为它是 拼写错误

Gys,我确定因为我没有发送正确的数据,它无法正常工作,这是我的更新功能: 公共函数

更新(用户$user( {

$data=request()->validate([
'title'=>'required',
'description'=>'required',
'Url'=>'url',

]);

$user->profile->update($data);
return redirect("/profile/{$user->id}");

} }

相关内容

  • 没有找到相关文章

最新更新