Это кажется простым, но я не могу это исправить
Я пытаюсь обновить запись в своей базе данных, запись успешно извлекается и отображается в моей форме обновления, но когда я нажимаю кнопку отправки, я получаю сообщение об ошибке Undefined variable: id.
Вот моя форма
<form action = "{{route('Person.update', $person->id)}}" method = "POST">
@csrf
{{method_field('PUT')}}
<div class = "col-md-12" style = "margin-top:20px">
<div class = "form-group" style = "width: 100%;">
<label for = "occupation">{{ __('Occupation') }}</label>
<select class = "form-control" name = "occupation" id = "occupation" required>
<option selected>{{$person->occupation}}</option>
<option value = "FE">{{ __('student') }}</option>
<option value = "Part">{{ __('Business') }} </option>
<option value = "Bank">{{ __('Civil servant') }} </option>
</select>
</div>
</div>
<div class = "col-md-6">
<div class = "input-group" style = "width: 100%;">
<label for = "id">{{ __('ID') }}</label><br>
<input type = "text" name = "id" id = "id" class = "form-control" value = "{{$person->id}}" style = "padding: 20px;" readonly>
</div>
</div>
<div class = "col-md-6">
<div class = "input-group col-md-12" style = "width: 100%;">
<label for = "name">{{ __('Name') }}</label><br>
<input type = "text" name = "name" id = "name" class = "form-control" value = "{{$person->name}}" style = "padding: 20px;" readonly>
</div>
</div>
<button type = "submit" class = "btn-primary" style = "padding: 10px; font-size: 16px; border: 0;">{{ __('Submit') }}</button>
</form>
Мой personController
public function edit($id)
{
$person= Person::find($id);
return view('pages.update')->with('person', $person);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
//validate
$this->validate($request,[
'id' => 'required',
'name' => 'required',
'occupation' => 'required',
]);
//store in the database
$person = Person::find($id);
$person->id = $request->input('id');
$person->name = $request->input('name');
$person->occupation = $request->input('occupation');
$person->save();
return redirect('pages.customers');
}
Вот ссылка, по которой я попал в форму редактирования
<a href = "/pages/customers/{{$person->id}}" class = "btn btn-warning">Update</a>
В методе update () нет переменной $ id, определенной или полученной. Отправьте нам, пожалуйста, остальной код контроллеров.
Мы не знаем, что именно вам нужно. Какой именно идентификатор вам нужен?






Вы должны использовать $request->input('id');.
Потому что, когда вы отправляете форму, ссылка создается с помощью /pages/customers/(id which you passed), а ваша операция обновления в функции update.
Пожалуйста, исправьте строку
$person = Person::find($request->input('id'));
Это правильно + вам нужно удалить person-> id, потому что это избыточно.
просто передайте $ id в метод обновления:
public function update(Request $request, $id)
но вы должны убедиться, что ваш маршрут содержит сегмент {id} в вашем файле маршрутов
Вы должны опубликовать точную ошибку и указать, где она возникает. Но в вашем методе
update()$idдействительно не определен. Вместо этого вы, вероятно, захотите$request->input('id').