我遇到了在下一个场景中找到实现Symfony表单的最佳方法的麻烦:
我有一组实体来存储清单目录(清单 - > Groups-> Tasks-> CorrectiveActions),这些清单可以由实体工作站实施。
在此实施中,电台将为每项任务提供分数,如果分数低于5,将为该任务显示一系列纠正措施,每个纠正措施将有一个复选框,因此电台可以选择实施它。 ..
我在原始html中编码了表单的外观:
我的问题是我不知道如何将其迁移到Symfony类型表单。
我不知道如何加载未映射字段列表(组,任务和纠正措施),然后创建与映射字段的关系(每个任务选择得分,每个任务选择纠正措施)
显然我不是要求我可以复制和粘贴的代码,我需要有关如何实现这个或一些可以帮助我的文档的想法。
我正在使用Symfony 3.1.0和下一个实体:
Checklist-> ChecklistGroup-> ChecklistGroupTask-> ChecklistGroupTaskCorrective v v v StationChecklist - > StationChecklistTask - > StationCheckListTaskCorrectives
没有创建StationChecklistGroup,因为我不打算向组添加任何类型的字段,或者我应该添加它吗?
修改 如果它有帮助,这是我的数据库结构,也许我可以更好地实现它(缺少一些字段)。这是西班牙语,但我认为你可以理解它,punto_venta是我的站点实体:
答案 0 :(得分:0)
你的问题在某些方面非常模糊,所以我会尽力帮助你:
要处理表单元素的集合(例如您的任务组),您应该使用CollectionType
。
使用未映射的表单将数据转换为真实实体是对Form组件的不可理解的使用,因此请尝试使用data_classes创建FormTypes。
IMO你应该为每个映射它的实体都有一个FormType。因此,当用户创建核对表时,渲染一个ChecklistFormType,它将具有groups
字段(CollectionType
GroupFormTypes
)。然后使用GroupFormType
字段tasks
CollectionType
)等创建CorrectiveActionsFormType
。
之后,我们面临的挑战是让您的代码可以重复使用Stations
,但我在这里对您的模型提出疑问:StationChecklists
与Checklists
真的不同吗? StationChecklistTasks
而不是ChecklistGroupTasks
?也许您可以使用接口或超类来更好地映射这些类似的实体,然后让FormType映射这些接口/超类,而不是实际的子实体。