我一直试图想出以单一形式为多个实体提交数据的最佳方式。
我的用例是我有一个包含多行不同实体的表。我希望能够进入“编辑”状态。查看某些列将成为文本字段并允许更改值的位置。
实施例
Type | Name | Age
Animal | Eevee | 4
Animal | Sandy | 7
Human | Bob | 24
[Submit]
在编辑模式下,他们可以更改任何实体的年龄。当用户点击整个列表的保存按钮时,我希望表单提交所有更改。问题是在更新方法中,我需要知道哪些实体要更新哪些值
我在考虑使用name属性在输入
上存储每个实体的实体ID<input name="{{$entity->id}} value="{{$entity->age}}"></input>
但是动物和人类存储在不同的数据库表中。所以在控制器的更新方法中,我必须取名称(这将是实体的id),如果它作为人类存在
entityToUpdate = Human::find(id)
如果entityToUpdate不存在
entityToUpdate = Animal::find(id)
我们在数据库中使用UUID,这样可行,但感觉不对。
有没有办法将表格中的几个输入组合在一起?
group1
type=animal
id = (Sandys ID)
age = 8
group2
type=human
id =(bobs ID)
age = 25
答案 0 :(得分:2)
您可以在输入名称中使用array notation
,以便在服务器端获得所需内容:
@foreach($entities as $entity)
<input type="hidden" name="group[{{$loop->index}}][type]" value="{{$entity->type}}"/>
<input type="hidden" name="group[{{$loop->index}}][id] value="{{$entity->id}}"/>
<input type="text" name="group[{{$loop->index}}][age] value="{{$entity->age}}"/>
@endforeach
然后在服务器端:
foreach(request()->get('group') as $entity) {
// $entity contains ['id'], ['type'], ['age']
}