未定义的变量:尝试更新laravel中的记录时出现id错误

时间:2018-12-07 12:06:36

标签: php laravel

这似乎很简单,但我无法解决 我正在尝试更新数据库中的一条记录,该记录已成功检索并显示在更新表单中,但是当我按下“提交”按钮时,我收到一条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>

2 个答案:

答案 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'));