Редактирование записи CRUD в Laravel
Update - изменить существующую запись. Обычно это отдельная страница с формой. Важно понять два момента: как поля формы изначально получают данные из базы и что происходит после нажатия кнопки.
Как данные появляются в форме
Сначала по id из URL находят
работника. Затем передают его
в шаблон и подставляют значения
в атрибуты value:
<?php
public function edit($id)
{
$employee = Employee::findOrFail($id);
return view('employees.edit', [
'employee' => $employee,
]);
}
?>
<form action="/employees/{{ $employee->id }}" method="POST">
@csrf
@method('PUT')
<input name="name" value="{{ $employee->name }}">
<input name="surname" value="{{ $employee->surname }}">
<input name="age" value="{{ $employee->age }}">
<input name="salary" value="{{ $employee->salary }}">
<input type="submit">
</form>
Без значений в value форма
была бы пустой, как при создании.
С ними пользователь видит текущие
данные и может их поправить.
Что после кнопки
После отправки приходит POST,
но метод подменяют на PUT через
@method('PUT'). Маршрут:
<?php
Route::get('/employees/{id}/edit', [EmployeeController::class, 'edit']);
Route::put('/employees/{id}', [EmployeeController::class, 'update']);
?>
В действии находят ту же запись и обновляют поля, затем редирект:
<?php
public function update(Request $request, $id)
{
$employee = Employee::findOrFail($id);
$employee->name = $request->input('name');
$employee->surname = $request->input('surname');
$employee->age = $request->input('age');
$employee->salary = $request->input('salary');
$employee->save();
return redirect('/employees');
}
?>
В таблице списка - ссылка на
редактирование с id работника.
Сделайте маршрут редактирования
с параметром id.
При GET покажите форму, заполненную данными работника.
При PUT обновите запись и сделайте редирект на список.
В таблице добавьте ссылку на редактирование каждого работника.
Расскажите своими словами:
зачем в форме @method('PUT').