Laravel 使用克隆的模型数据填充表单
Laravel populate form with cloned model data
我在我的应用程序中实现了一个“克隆”按钮,它应该允许执行以下操作:
- 创建所选模型的副本;
- 重定向到
create
视图,其表单字段应填充克隆模型的数据;
- 允许用户编辑一些字段;
- 保存新模型。
到目前为止,我的ModelController@clone
方法是:
$newModel = $existingModel->replicate();
$newModel->title = "Copy of ".$existingModel->title;
$newModel->created_at = now() // not sure if necessary, or if it'll be changed once the model is stored in the database
return redirect(route('models.create')); // I know this doesn't do what I need
显然,没有任何内容传递给 create
视图,但我找不到任何关于如何传递的线索。
我已尝试将 ->withInput(compact($newModel))
添加到 redirect()
调用中,但我没有看到该字段被填充。
在 models.create
视图中,我已将表单字段设置为使用 old(...)
数据(如果可用)。
This 答案几乎是我所需要的,但这意味着要更改每个字段以检查是否存在 old
会话数据以外的某种输入,如下所示:
<input [other attributes omitted] value="{{ $newModel['title'] ?? old('title') }}">
这样做是正确的方法,还是有 quicker/more 标准化的处理方法?
您可以通过以下方式覆盖会话旧输入数据:
Session::put('_old_input', $newModel);
然后在表单输入
中渲染old()
我在我的应用程序中实现了一个“克隆”按钮,它应该允许执行以下操作:
- 创建所选模型的副本;
- 重定向到
create
视图,其表单字段应填充克隆模型的数据; - 允许用户编辑一些字段;
- 保存新模型。
到目前为止,我的ModelController@clone
方法是:
$newModel = $existingModel->replicate();
$newModel->title = "Copy of ".$existingModel->title;
$newModel->created_at = now() // not sure if necessary, or if it'll be changed once the model is stored in the database
return redirect(route('models.create')); // I know this doesn't do what I need
显然,没有任何内容传递给 create
视图,但我找不到任何关于如何传递的线索。
我已尝试将 ->withInput(compact($newModel))
添加到 redirect()
调用中,但我没有看到该字段被填充。
在 models.create
视图中,我已将表单字段设置为使用 old(...)
数据(如果可用)。
This 答案几乎是我所需要的,但这意味着要更改每个字段以检查是否存在 old
会话数据以外的某种输入,如下所示:
<input [other attributes omitted] value="{{ $newModel['title'] ?? old('title') }}">
这样做是正确的方法,还是有 quicker/more 标准化的处理方法?
您可以通过以下方式覆盖会话旧输入数据:
Session::put('_old_input', $newModel);
然后在表单输入
中渲染old()