Laravel使用输入组填充表单


Laravel populate form with input groups

我正在寻找将数据绑定到带有输入组的形式的方法。例如,我有这些输入:

Form::text('purchaser[address]');
Form::text('seller[address]');

我想绑定来自我的变量的数据 - $purchaser变量有一个字段"地址",$seller也有一个字段"地址"。我知道表格可以使用拉拉维尔填写

Form::model

但我找不到如何将其用于输入组的示例。甚至有这种可能性还是我必须手动完成?

编辑:我想我弄错了。您只想填充address字段值,而不是address关系,而是使用一组模型,对吗?

因此,您可以轻松执行此操作:

$purchaser = Purchaser::with('address')->find($someId);
$groups = new Illuminate'Support'Collection;
$groups->put('purchaser', $purchaser);
$groups->put('another_model', $anotherModel);
// then
Form::model($groups->toArray())
  Form::text('purchaser[address]')
  Form::text('another_model[some_field]')

首先你需要load address,然后你需要以数组方式调用它:

// eager load
$purchaser = Purchaser::with('address')->find($someId);
// or lazy load
$purchaser->load('address');
// then:
Form::model($purchaser, ...)
  Form::text('address[street]')
  Form::text('address[city]')
  // and so on

从文档中,我认为您非常接近:

Form::model($purchaser);

然后,如果你想要一个包含地址值的<input type="text">,你可以调用:

Form::text("address");

Laravel应该为你提供模型的价值。

请注意,这假设您定义了$purchaser模型。如果没有,请先执行此操作。

通常,我只是手动<input>元素,因为我觉得我有更多的控制权。在这种情况下:

<input type="text" name="address" value="{{ $purchaser->address }}" class="..."/>

我可以随时编辑和修改它,尤其是classvalue属性。

希望对您有所帮助!