You could do this inside your controller (having to much logic in a view is never a good thing)
- Create 1 method in which you check session / request / old() for each of the form fields
- Call that method in all the steps to get formData from session / request / old
- Use $formData to populate your form.
So inside your controller you could have something like:
public function step1(Request $request)
{
// do stuff
return view('step1', $data);
}
public function step2(Request $request)
{
// do stuff
return view('step2', $data);
}
Which could be turned into something like:
public function step1(Request $request)
{
// do stuff
$data['formData'] = $this->prepareFormData($request);
return view('step1', $data);
}
public function step2(Request $request)
{
// do stuff
$data['formData'] = $this->prepareFormData($request);
return view('step2', $data);
}
private function prepareFormData($request)
{
$fields = ['all', 'form', 'fields', 'of', 'all', 'forms'];
$data = [];
foreach($fields as $field) {
if($request->has($field) {
$data[$field] = $request->get($field);
} else if(\Session::has($field)) {
$data[$field] = \Session::get($field);
} else if(old($field)) {
$data[$field] = old($field);
}
}
return $data;
}
View:
value="@if(isSet($formData[$field])) {{ $formData[$field] }} @endif"