Home > Blockchain >  Laravel populate form with cloned model data
Laravel populate form with cloned model data

Time:09-21

I'm implementing a "Clone" button in my application, which should allow to perform the following:

  1. create a copy of the chosen model;
  2. redirect to the create view, whose form field should be populated with the cloned model's data;
  3. allow the user edit some fields;
  4. save the new model.

So far, my ModelController@clone method is:

$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

As it is, obviously, nothing gets passed to the create view, but I can't find any clue on how to do that.

I have tried adding ->withInput(compact($newModel)) to the redirect() call, but I don't see the field being populated.

In the models.create view, I have set up the form field to use the old(...) data, if available.

This answer is almost what I need, but it would imply changing every field to check if there is some sort of input other than the old session data, like this:

<input [other attributes omitted] value="{{ $newModel['title'] ?? old('title') }}">

Is it the right way to do so, or is there a quicker/more standardized way of proceeding?

CodePudding user response:

you could overriding the session old input data by:

Session::put('_old_input', $newModel);

and then just render the old() in form inputs

  • Related