Php Laravel 5.1-使用JSON对象时干式创建/编辑表单

Php Laravel 5.1-使用JSON对象时干式创建/编辑表单,php,arrays,json,laravel,laravel-5.1,Php,Arrays,Json,Laravel,Laravel 5.1,我有一个非常相似的创建表单和编辑表单,事实上它们之间只有一个关键区别,这就是我需要帮助的地方 我想将表单提取成一个部分,这样我就不会重复我自己的内容,但是我有一点问题 我正在将一个genetics数组(genetics[])作为JSON对象保存到我的数据库中,它可以如下所示,例如: { "Bell-Albino":"BA", "Rainwater-Albino":"na", "Tremper-Albino":"na", "Murphys-Patternless":

我有一个非常相似的创建表单和编辑表单,事实上它们之间只有一个关键区别,这就是我需要帮助的地方

我想将表单提取成一个部分,这样我就不会重复我自己的内容,但是我有一点问题

我正在将一个genetics数组(
genetics[]
)作为JSON对象保存到我的数据库中,它可以如下所示,例如:

{
    "Bell-Albino":"BA",
    "Rainwater-Albino":"na",
    "Tremper-Albino":"na",
    "Murphys-Patternless":"mp",
    "Eclipse":"EC",
    "Marble-Eye":"na",
    "Blizzard":"b",
    "Mack-Snow":"na",
    "Super-Snow":"SS",
    "Gem-Snow":"na",
    "TUG-Snow":"na",
    "Line-Bred-Snow":"na",
    "Enigma":"EN",
    "White-and-Yellow":"WY",
    "Wildtype":"na",
    "Giant":"na"
}
下面是
Bell Albino
字段的代码摘录,向您展示如何在
create
视图中设置其余的代码。我必须为值设置键。提交时出现错误,
Request::old()
会执行它需要执行的操作,并完全保留该值。这工作正常,没有损坏:

<label for="genetics">Bell Albino</label>
<?php $options = array('na' => 'N/A', 'BA' => 'Visual', 'ba' => 'Recessive'); ?>
{!! Form::select(
    'genetics[Bell-Albino]', 
    $options, 
    Request::old('genetics[Bell-Albino]'), 
    array('class' => 'form-control')) 
!!}
为了在页面加载时正确显示/显示/选择genetics数组值,我必须将我的字段值解码到另一个数组中,如我的
表单上所示:

<?php $genetics[] = json_decode($gecko->genetics, true); ?>
现在,从上面的两段代码中,您可以看到唯一真正的区别是我在哪里使用了
Request::old()
。有什么方法可以实现将此表单与JSON对象一起使用的简单方式吗?

无论您的“线索”告诉您它是编辑表单还是创建表单,请在不同的一行中使用它:

<label for="genetics">Bell Albino</label>
<?php $options = array('na' => 'N/A', 'BA' => 'Visual', 'ba' => 'Recessive'); ?>
{!! Form::select(
    'genetics[Bell-Albino]', 
    $options, 
    $isEdit ? $genetics[0]['Bell-Albino'] : Request::old('genetics[Bell-Albino]'), // here!
    array('class' => 'form-control')) 
!!}
这可能在您的“编辑”页面上:


其中
my.form
包含上述
form::select

实际上这不是个坏主意。我一直在想这件事,但怀疑自己,哈哈,我一直在做这样的事情。干吧!
array:1 [▼
  0 => array:16 [▼
    "Bell-Albino" => "BA"
    "Rainwater-Albino" => "na"
    "Tremper-Albino" => "na"
    "Murphys-Patternless" => "mp"
    "Eclipse" => "EC"
    "Marble-Eye" => "na"
    "Blizzard" => "b"
    "Mack-Snow" => "na"
    "Super-Snow" => "SS"
    "Gem-Snow" => "na"
    "TUG-Snow" => "na"
    "Line-Bred-Snow" => "na"
    "Enigma" => "EN"
    "White-and-Yellow" => "WY"
    "Wildtype" => "na"
    "Giant" => "na"
  ]
]
<label for="genetics">Bell Albino</label>
<?php $options = array('na' => 'N/A', 'BA' => 'Visual', 'ba' => 'Recessive'); ?>
{!! Form::select(
    'genetics[Bell-Albino]', 
    $options, 
    $isEdit ? $genetics[0]['Bell-Albino'] : Request::old('genetics[Bell-Albino]'), // here!
    array('class' => 'form-control')) 
!!}
@include('my.form', ['isEdit' => false]);
@include('my.form', ['isEdit' => true]);