2016-06-07 80 views
0

我有麻烦找到最好的方法来实现的下一个场景一个Symfony的形式:Symfony的形式预填充数据

我有一组实体的存储目录清单中(Checklists->组 - >任务 - >纠正动作),这些清单可以由实体站实施。

在这个实施中,如果分数低于5,电台将为每项任务提供一个分数,每项纠正措施将出现一个复选框,以便电台选择实施它...

我在原始的HTML编码形式如何看起来像:

How the form looks like

我的问题是我不知道如何将这种迁移到Symfony的类型形式。

我不知道如何加载映射的字段(组,任务和纠正措施)的列表,然后创建映射字段的关系(每个任务选择的分数和各任务selecteds纠正措施)

显然我没有要求我可以复制和粘贴的代码,我需要关于如何实现这个或一些可以帮助我的文档的想法。

我与Symfony的3.1.0和下一个实体的工作:

Checklist-> ChecklistGroup-> ChecklistGroupTask-> ChecklistGroupTaskCorrective VVV StationChecklist - > StationChecklistTask - > StationCheckListTaskCorrectives

没有创造StationChecklistGroup,因为我不打算为组添加任何类型的字段,或者我应该添加它吗?

编辑 如果它有帮助,这里是我的数据库结构,也许我可以更好地实现它(一些领域缺失)。这是西班牙语,但我认为你能理解它,punto_venta是我站的实体: DB Mapping

回答

0

你的问题是相当模糊的一些看法,所以我会尽力帮助你就像我可以:

  • 要处理表单元素的集合(例如您的任务组),您应该使用CollectionType

  • 将未映射的表单转换为真实的实体是一个令人沮丧的表单组件的使用,所以尝试使用data_classes包含FormTypes。

  • IMO你应该有一个FormType为你的每个实体映射它。因此,当用户创建清单时,呈现一个ChecklistFormType,该清单将具有groups字段(CollectionTypeGroupFormTypes)。然后用tasks场(的CorrectiveActionsFormTypeCollectionType)等

  • 之后,创建GroupFormType,面临的挑战将是使你的代码可重用的Stations,但我在这里问了一下你的模型:是StationChecklists真的不同于Checklists?和StationChecklistTasksChecklistGroupTasks?也许你可以使用接口或超类更好地映射这些相似的实体,然后让FormType映射这些接口/超类,而不是实际的子实体。

+0

是的,我陷入了这个挑战。我已经可以创建清单了,而且我按照您对每个实体的FormType建议的方式完成了清单。我的StationChecklist实体基本上是一个与实体Checklist和实体站连接的表格,添加了一些字段,如“DateLimit”和“ImplementationDate”。 然后StationChecklistTasks将包含每个任务的得分,并且它与StationChecklist和ChecklistTask一起被加入... 最后,StationChecklistTaskCorrective只添加一个布尔字段来知道已经执行了哪些纠正措施。 – Kynethix

+0

当用户创建一个StationChecklist时它是如何工作的?表单与清单相同,但最初需要选择一个工作站? – Terenoth

+0

首先,用户选择在哪个站想要操作以及要执行什么清单,然后将选定的清单ID和选定的站点ID发送到新的控制器,然后我可以通过检索到的ID来加载实体。 – Kynethix