При повторном использовании частичной формы с Form :: model () и Form :: open () у меня возникают проблемы с использованием значений по умолчанию.
Например, при использовании следующей формы part partials / form.blade.php:
{!! Form::text('myfield', 'Default') !!}
{!! Form::text('otherfield', '123') !!}
{!! Form::text('yetanother', 'Yet another default') !!}
// Etc
Я бы включил это следующим образом, create.blade.php:
{!! Form::open() !!}
@include('partials/form.blade.php')
{!! Form::close() !!}
и для редактирования edit.blade.php:
{!! Form::model($mymodel) !!}
@include('partials/form.blade.php')
{!! Form::close() !!}
Однако значения по умолчанию не могут быть использованы, поскольку с помощью edit.blade.php все значения модели игнорируются (это всегда будут «По умолчанию», «123» и «Еще одно значение по умолчанию», и никогда не будут фактическими значениями модели). ,
И при использовании значения null в качестве значения по умолчанию оно будет заполнять значения модели для edit.blade.php, но тогда поля create.blade.php будут пустыми.
Что было бы хорошим способом использовать значения модели в редактировании и значения по умолчанию для новой модели?
Вы можете указать значения по умолчанию в виде массива и использовать Form::model()
а также для формы создания:
{!! Form::model(['myfield' => 'Default', 'otherfield' => '123', 'yetanother' => 'Yet another default']) !!}
@include('partials/form.blade.php')
{!! Form::close() !!}
(Если есть еще много полей, я бы передавал значения по умолчанию из контроллера)
И тогда просто не используйте значения по умолчанию в form.blade.php
:
{!! Form::text('myfield') !!}
{!! Form::text('otherfield') !!}
{!! Form::text('yetanother') !!}
Если $mymodel
поставляется непосредственно из контроллера, вы даже можете использовать тот же вид для редактирования и создания:
{!! Form::model($mymodel) !!}
{!! Form::text('myfield') !!}
{!! Form::text('otherfield') !!}
{!! Form::text('yetanother') !!}
{!! Form::close() !!}
И просто введите правильную вещь в вид. Как это:
public function edit($id){
$mymodel = MyModel::find($id);
return view('form')->with('mymodel', $mymodel);
}
public function create(){
$defaults = [
'myfield' => 'Default',
'otherfield' => '123',
'yetanother' => 'Yet another default'
];
return view('form')->with('mymodel', $defaults);
}
Других решений пока нет …