Forms 带有Symfony2的大表单集合

Forms 带有Symfony2的大表单集合,forms,symfony,collections,Forms,Symfony,Collections,我在Symfony2的大表格上遇到了一些问题。让我解释一下情况: 我的一个客户提供了一天的课程,我正在构建一个应用程序,参与者可以注册一个特定的课程。过程很简单:参与者登录、选择课程、选择日期并注册 这涉及多个实体: 课程,~20个必需的属性,一个拥有课程的公司 CourseDate,~1个必需属性,一个具有CoureDateParticipant 课程参与人,~20家酒店,多家酒店有参与人 CourseDateParticipant的属性与alsCourse几乎相同,大多数属性仅在某些情况下用

我在Symfony2的大表格上遇到了一些问题。让我解释一下情况:

我的一个客户提供了一天的课程,我正在构建一个应用程序,参与者可以注册一个特定的课程。过程很简单:参与者登录、选择课程、选择日期并注册

这涉及多个实体:

  • 课程,~20个必需的属性,一个拥有课程的公司
  • CourseDate,~1个必需属性,一个具有CoureDateParticipant
  • 课程参与人,~20家酒店,多家酒店有参与人
  • CourseDateParticipant的属性与alsCourse几乎相同,大多数属性仅在某些情况下用于覆盖Course的属性。因此,在大多数情况下,大多数CourseDateParticipants属性将为空

    在后端,我有一个表单,管理员可以添加和编辑一次整个课程。表单类似于实体,即CourseType集合为CourseDateType集合为CourseDateParticipantType

    除了大球场外,一切都很顺利。课程最多可包含50名课程参与者课程参与者最多可包含1000名课程参与者。每个属性都有自己的字段,因此使用这些数字,表单将包含50*1000*20=1.000.000个字段。但是,这些字段中的大多数将为空

    我已经做了一些Jquery魔术来让UI可用。当添加课程时仅提交填写的字段。编辑时,仅提交更改的字段

    但是,当调用$form->createView()并预先填充如此大的数字时(编辑时),控制器会阻塞。我正在考虑的一些解决方案:

    • 告诉客户把这么大的课程分成小部分。(不是我最喜欢的)
    • 不要在初始化时渲染CourseDateParticpant,但如果管理员单击按钮,则在初始化之后渲染。可以是渲染全部的按钮,也可以是每个课程参与者的按钮
    • CourseDateParticipant中删除许多属性,并将异常保存到其他地方

    你们有其他/更好的建议吗?

    不幸的是,这是一个已知的问题,例如,退房。任何时候处理50000件物品都会遇到问题。与其为更糟糕的情况而设计,不如尝试一种中间方法。对于给定的课程,默认情况下显示前10个CourseDates。为用户提供下一步/上一步/搜索按钮。对CourseParticipant也这样做。不幸的是,这是一个已知的问题,例如签出。任何时候你处理50000个项目都会遇到问题。与其为更糟糕的情况而设计,不如尝试一种中间方法。对于给定的课程,默认情况下显示前10个CourseDates。为用户提供下一步/上一步/搜索按钮。对CourseParticipant也这样做。不幸的是,这是一个已知的问题,例如签出。任何时候你处理50000个项目都会遇到问题。与其为更糟糕的情况而设计,不如尝试一种中间方法。对于给定的课程,默认情况下显示前10个CourseDates。为用户提供下一步/上一步/搜索按钮。对课程参与者也这样做。