我正在尝试更新数据库中的记录。这是一个特定元素,是另一个元素。这是我的代码,它不起作用:/
web.php:
Route::patch('/projects/{projectID}/{id}', 'ProjectsController@update');
控制器:
public function update($projectId, $id, CreateProjectRequest $request)
{
$page = Page::findOrFail($id);
$page->update([
'name' => $request->name,
]);
return redirect('/projects/' . $projectId);
}
HTML:
{!! Form::model($page, ['method'=>'PATCH', 'action' =>
['ProjectsController@update', $project->id, $page->id]]) !!}
{!! Form::text('name',null,['class'=>'blue-inp']) !!}
{!! Form::submit('Save changes',['class'=>'btn btn-save-blue']) !!}
{!! Form::close() !!}
答案 0 :(得分:0)
您只需要在控制器更新方法中为CreateProjectRequest
切换类类型提示Request
。
然后可以像这样访问从表单输入字段传递的变量:
$name = $request->input('name');
有关该主题的更多信息:https://laravel.com/docs/5.0/requests
答案 1 :(得分:0)
您可以简化控制器方法,假设CreateProjectRequest
处理了所有必要的验证,并且其输入与您要更新的输入匹配
编辑:我更喜欢使用带有规则的formrequests验证所有内容,并且当它到达控制器时,它只是调用服务或执行操作。
就命名约定而言,您可能无需在url参数中发送$ id并将其发送到正文中,以避免在formrequest中使用Request来验证它是否存在于数据库中
public function update($projectId, $id, CreateProjectRequest $request)
{
$data = $request->validated();
Page::findOrFail($id)->update($data);
return redirect('/projects/' . $projectId);
}