Не так давно перешел на Laravel.
Есть контроллер для редактирования публикаций, публикация имеет 43 поля для заполнения. За создание формы для публикации отвечает метод show(), а за форму редактирования метод edit(). В каждом из методов порядка 600 строк кода, отвечающего за генерирование различных чекбоксов, селектов, инпутов и прочих полей. И получается так, что код в этих двух методах на 95% идентичен, и основное отличие в том, что в методе edit() берутся и подставляются данные из базы данных, а методе show() данные из базы не берутся, а подставляются пустые значения.
Пример конструкции методов:
public function show()
{
$data['country_html'] = select(config('catalog.country_list'), 'country', '');
...
Много кода
...
return view('ContentAddEdit', $data);
}
public function edit($id)
{
$row = DB::table('content')->where('id',$id)->first();
$data['country_html'] = select(config('catalog.country_list'), 'country', $row['country']);
...
Много кода
...
return view('ContentAddEdit', $data);
}
Как бы в данном случае избавиться от дублирования кода и сделать его универсальным, для использования как при добавлении новой публикации так и редактировании существующей. После внесения изменений в метод show(), часто забываю продублировать эти изменения и в метод edit(). В общем очень не удобно когда изменения нужно постоянно дублировать в двух местах.
Думал вынести данный код в отдельный метод и прописать его вызов в методах show() и edit(), но как тогда лучше поступить с массивом $row, так как для метода show() он будет пуст.