I'm implementing a "Clone" button in my application, which should allow to perform the following:
create
view, whose form field should be populated with the cloned model's data;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?
you could overriding the session old input data by:
Session::put('_old_input', $newModel);
and then just render the old()
in form inputs