【问题标题】:Laravel 5.2 Update RecordLaravel 5.2 更新记录
【发布时间】:2016-07-18 20:19:37
【问题描述】:

我正在做一个简单的 CRUD。我在编辑和更新数据库中的记录时遇到问题。

这是我的 route.php:

Route::post('/task/edit',function (Request $request, $id){
$task = Task::find($id);
$task->name = Input::get('name');
$task->save();

return redirect('/');
});

这是我的表格:

<form action="{{url('/task/edit')}}" method="POST" role="form">
  {{csrf_field()}}
  <label for="editTask" class="control-label">Edit Task</label>
  <input type="text" class="form-control" name="name">
  <br>
  <button class="btn btn-success form-control">Submit</button>
</form>

我能知道如何解决这个问题吗?我指的是Basic Task List,并想再添加一项功能,即更新。还是我只是做错了什么?

【问题讨论】:

  • 你的问题是?!
  • 你没有在你的路由中指定 id 参数...

标签: php laravel laravel-5.2


【解决方案1】:

应该是:

Route::post('/task/edit', function (Request $request){

    $task = Task::find($request->input('id'));
    $task->name = $request->input('name');
    $task->save();

    return redirect('/');
});

并且你必须在表单中添加一个隐藏的输入类型

<input type="hidden" name="id" value="{{ $id }}" />

并且不要忘记将这些路线放在

Route::group(['middleware' => ['web']], function () {...});

为了让 _token 工作

【讨论】:

  • 很高兴听到这个消息,嗯。
  • 我现在有另一个问题,所以现在我有一些数据,但是每当我尝试编辑特定数据时,只会编辑第一个数据。我该如何解决这个问题?
  • here,不知何故,当我没有在表单中输入任何文本时,我的验证不再有效,但没有出现错误消息。
  • 如果您不向我提供实际代码,我怎么知道哪里出了问题?向我显示验证规则、进行验证的代码以及显示错误消息的刀片中的代码。甚至可能是整个方法,或者至少是相关部分。
  • 首先你在输入 name="name" 中缺少 value="{{$task->name}}",所以使它成为