【问题标题】:Undefined variable: id error while trying to update record in laravel未定义的变量:尝试更新 laravel 中的记录时出现 id 错误
【发布时间】:2019-05-09 04:50:40
【问题描述】:

这看起来很简单,但我无法解决它 我正在尝试更新我的数据库中的一条记录,该记录已成功检索并显示在我的更新表单上,但是当我点击提交按钮时,我收到一条 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-&gt;input('id')
  • 在 update() 方法中没有定义或检索 $id 变量。请把剩下的控制器代码发给我们。
  • 我们不知道您到底需要什么。您需要什么确切的 ID?

标签: php laravel


【解决方案1】:

只需将 $id 传递给您的 Update 方法:

public function update(Request $request, $id)

但您必须确保您的路线在您的路线文件中有 {id} 段

【讨论】:

    【解决方案2】:

    你必须使用$request-&gt;input('id');

    因为当您提交表单时,链接是用/pages/customers/(id which you passed) 创建的,而您的更新操作是在update 函数中进行的。

    请改正

     $person = Person::find($request->input('id'));
    

    【讨论】:

    • 这是对的 + 你需要删除 person->id,因为它是多余的。
    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多