这似乎很简单,但我无法解决
我正在尝试更新数据库中的一条记录,该记录已成功检索并显示在更新表单中,但是当我按下“提交”按钮时,我收到一条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>
答案 0 :(得分:2)
只需将$ id传递给您的Update方法:
public function update(Request $request, $id)
但是您必须确保您的路线在其路线文件中具有{id}段
答案 1 :(得分:1)
您必须使用$request->input('id');
。
因为在提交表单链接时使用/pages/customers/(id which you passed
创建了链接,但是您在update
函数中进行了更新操作。
请更正该行
$person = Person::find($request->input('id'));