#laravel #routes #reload
#laravel #маршруты #перезагрузить
Вопрос:
я столкнулся с простой, но сложной проблемой маршрутизации! итак, я создаю приложение с помощью laravel, используя blade. Моя проблема проста: когда я редактирую данные пользователя, я перенаправляю на свою страницу пользователя, как я хочу, но информация не обновляется! как я могу это сделать? я перепробовал так много вещей, что больше не вижу, что не так!
Может кто-нибудь помочь мне понять мои ошибки? Спасибо! французский новичок 🙂
<button type="submit" class="btn btn-outline-success btn-block"><a href="{{redirect()->route('users.show',['id'=>$user->id])}}"></a>Valider la modification</button>
Комментарии:
1. Удалить
redirect()->
, но есть и другие проблемы, например, наличие<a>
внутриbutton type="submit"
Ответ №1:
href
Атрибут <a>
внутри <button>
имеет приоритет над атрибутом <form>
‘s action
, поэтому ваше действие обновления никогда не вызывается. Вы должны выполнить перенаправление в своем действии маршрута, например, в контроллере:
class UserController extends Controller
{
// other actions
public function update(Request $request, $id)
{
$user = User::find($id);
$user->fill($request->all()); // Do not fill unvalidated data
if (!$user->save()) {
// Handle error
// Redirect to the edit form while preserving the input
return redirect()->back()->withInput();
}
// Redirect to the 'show' page on success
return redirect()->route('users.show', ['id' => $user->id]);
}
// more actions
}
Затем ваша форма должна выглядеть примерно так:
<form action="{{ route('user.update', ['id' => $user->id]) }}" method="POST">
<!-- Use @method and @csrf depending on your route's HTTP verb and if you have CSRF protection enabled -->
@method('PUT')
@csrf
<!-- Your form fields -->
<button type="submit" class="btn btn-outline-success btn-block">
Valider la modification
</button>
</form>
Комментарии:
1. Большое вам спасибо, это работа, и я вижу свое непонимание!