【问题标题】:Symfony form with prepopulated data带有预填充数据的 Symfony 表单
【发布时间】:2016-10-07 08:34:42
【问题描述】:

我很难找到为下一个场景实现 Symfony 表单的最佳方法:

我有一组实体来存储清单目录(Checklists->Groups->Tasks->CorrectiveActions),这些清单可以由实体 Stations 实现。

在此实施中,工作站将为每个任务打分,如果分数低于 5,则会出现该任务的纠正措施列表,每个纠正措施都会有一个复选框,因此工作站可以选择实施它。 ..

我已经用原始 html 编写了表单的样子:

我的问题是我不知道如何将它迁移到 Symfony 类型的表单。

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

显然我不是要我可以复制和粘贴的代码,我需要有关如何实现此功能的想法或一些可以帮助我解决此问题的文档。

我正在使用 Symfony 3.1.0 和下一个实体:

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

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

编辑 如果它在这里有帮助是我的数据库结构,也许我可以更好地实现它(缺少一些字段)。是西班牙文,不过我想你可以理解,punto_venta 是我的车站实体:

【问题讨论】:

    标签: php forms types symfony


    【解决方案1】:

    你的问题在某些方面很模糊,所以我会尽力帮助你:

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

    • 让未映射的表单将数据转换为真实实体是对表单组件的一种不起眼的使用,因此请尝试使用带有 data_classes 的 FormTypes。

    • IMO 您应该为每个映射它的实体拥有一个 FormType。因此,当用户创建一个清单时,呈现一个 ChecklistFormType,它将有一个 groups 字段(CollectionTypeGroupFormTypes)。然后使用tasks 字段(CollectionType of CorrectiveActionsFormType)等创建GroupFormType

    • 1234563和StationChecklistTasksChecklistGroupTasks?也许您可以使用接口或超类更好地映射这些相似的实体,然后让 FormType 映射这些接口/超类,而不是实际的子实体。

    【讨论】:

    • 是的,我被困在了那个挑战中。我已经可以创建清单,并且按照您的建议为每个实体使用了 FormType。我的 StationChecklist 实体基本上是一个与实体 Checklist 和实体 Station 连接的表,添加了一些字段,如“DateLimit”和“ImplementationDate”。然后 StationChecklistTasks 将包含每个任务的分数,并与 StationChecklist 和 ChecklistTask...
    • 用户创建StationChecklist时它是如何工作的?表格是否与清单相同,但首先要选择一个站点?
    • 首先用户选择要在哪个站操作以及要执行什么清单,然后我将选定的清单 id 和选定的站 id 都发送到新控制器,在那里我可以通过检索到的 ID。
    • 那么你现在真正的问题是什么?如果您的清单创建过程很好,并且您可以将清单链接到站点,那么一切都会按预期进行,对吗?
    • 我的问题来自表单生成。我正在尝试以 symfony 的方式正确创建“FormTypes”。例如,我应该使用什么字段类型为每个 ChecklistTask 生成 4 个单选按钮,这些单选按钮将在 StationChecklistTask 中存储选定的单选按钮。纠正措施也是如此,我应该使用哪个字段为每个纠正措施添加一个复选框,然后将其存储在 StationChecklistTaskCorrective 中。
    猜你喜欢
    • 2017-05-21
    • 2013-03-08
    • 2012-08-14
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2021-11-30
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多