#php #laravel
#php #laravel
Вопрос:
Я пытаюсь обновить свой профиль пользователя, и у меня возникла проблема с
SymfonyComponentHttpKernelExceptionMethodNotAllowedHttpException Метод PUT не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD, POST.
Я определил маршрут, и я не уверен, почему это происходит.
web.php
Route::get('/user/{id}',[UserController::class,'show'])->name('user.profile');
Route::get('/edit/user/',[UserController::class,'edit'])->name('user.edit');
Route::post('/edit/user/',[UserController::class,'update'])->name('user.update');
UserController
public function update(Request $request)
{
$user = User::find(Auth::user()->id);
if ($user){
$validate = null;
if (Auth::user()->email === $request ['email']) {
$validate = $request->validate([
'name' => 'required',
'email' => 'required',
'phone' => 'required',
'address' => 'required'
]);
} else {
$validate = $request->validate([
'name' => 'required',
'email' => 'required',
'phone' => 'required',
'address' => 'required'
]);
}
if($validate){
$user->name = $request['name'];
$user->email =$request['email'];
$user->phone = $request['phone'];
$user->address = $request['address'];
$user->save();
$request ->session->flash('success', 'Profile have been updated');
return redirect()->back();
} else{
return redirect()->back();
}
} else {
return redirect()->back();
}
}
edit.blade.php
<form class="form-horizontal" action="{{route('user.update',$user->id)}}" method="POST">
@csrf
@method('PUT')
@if(session('success'))
<div class="alert alert-success" role="alert">
{{session('success')}}
</div>
@endif
<div class="card-body">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" value="{{$user->name}}">
</div>
</div>
Комментарии:
1. вы не определили его так, как
PUT
вы определили его какPOST
, поэтому метод не соответствует .. ваша форма заменяет метод какPUT
Ответ №1:
Удалите @method(‘PUT’) из блейд-файла —
<form class="form-horizontal" action="{{route('user.update',$user->id)}}" method="POST">
@csrf
@if(session('success'))
<div class="alert alert-success" role="alert">
{{session('success')}}
</div>
@endif
<div class="card-body">
<div class="form-group row">
<label for="name" class="col-sm-2 col-form-label">Name</label>
<div class="col-sm-10">
<input type="text" class="form-control" name="name" value="{{$user->name}}">
</div>
</div>