Laravel 使用克隆的模型数据填充表单

Laravel populate form with cloned model data

我在我的应用程序中实现了一个“克隆”按钮,它应该允许执行以下操作:

  1. 创建所选模型的副本;
  2. 重定向到 create 视图,其表单字段应填充克隆模型的数据;
  3. 允许用户编辑一些字段;
  4. 保存新模型。

到目前为止,我的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()