重用 laravel 表格部分

Reuse laravel form partial

当重用带有 Form::model() 和 Form::open() 的部分表单时,我 运行 遇到了有关如何使用默认值的问题。

例如,当使用以下形式部分 partials/form.blade.php:

{!! Form::text('myfield', 'Default') !!}
{!! Form::text('otherfield', '123') !!}
{!! Form::text('yetanother', 'Yet another default') !!}
// Etc

我会按如下方式包含它,创建。blade.php:

{!! Form::open() !!}
  @include('partials/form.blade.php')
{!! Form::close() !!}

并用于编辑编辑。blade.php:

{!! Form::model($mymodel) !!}
  @include('partials/form.blade.php')
{!! Form::close() !!}

但是,默认值不能像那时那样与编辑一起使用。blade.php 所有模型值都将被忽略(它将始终是 'Default'、'123' 和 'Yet another default',而不是实际的模型值)。

并且当使用 null 作为默认值时,它将填充编辑的模型值。blade.php,但随后创建。blade.php 字段将为空。

使用编辑中的模型值和新模型的 "default" 值的好方法是什么?

您可以将默认值指定为数组并使用 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);
}