【问题标题】:Symfony 2 dynamically add field to form on user siteSymfony 2 在用户站点上动态添加字段以形成表单
【发布时间】:2016-01-30 22:53:59
【问题描述】:

我正在研究调查包。目标是为用户提供一个完全工作的调查系统。 我已经准备了一个后端,它允许您创建调查、添加问题(打开文本、单选按钮、复选框)、是否需要提问、激活调查、生成令牌以及通过电子邮件发送带有令牌的调查链接。 当然,我也有显示调查并保存答案的前端。 现在我想添加另一种可能性。带有答案(单选或复选框)和评论的问题。例如:

你有狗吗?

  • 是的
  • 没有

如果用户选择“是”,则附加字段会带有“狗的名字是什么?”的问题。应该出现并允许用户输入狗的名字。 如果用户选择否,则不会发生任何事情。

这样简单的问题可以带有隐藏字段,但是如果我有 20 个带有此类“附加”信息的问题呢?

你知道 symfony 中的一些机制可以让我这样做吗? 我正在尝试与听众一起尝试,但无法创建任何灵活和通用的东西(我可以用复选框提出问题,而一个问题中的一些答案可以有其他不需要的其他字段)。

【问题讨论】:

    标签: php jquery forms symfony


    【解决方案1】:

    我有一种感觉,你不能只使用FormType 并形成事件侦听器。如果您的目标是根据用户在同一表单中的选择显示/隐藏其他问题,则还需要涉及一些 javascript。 FormType 仅生成表单字段(以及任何嵌入/嵌套表单)。所有其他 UI 交互或动态验证都应使用 JavaScript 和 FormEvent 侦听器进行。

    我要做的是有一个事件侦听器,它为所有问题单选/复选框(有其他问题/字段)添加一个属性(即data-has-additional)。然后我会有一个 jquery on() 监听器,它检查单选/复选框是否被选中/取消选中,并根据它显示/隐藏附加字段的状态。您应该能够将其抽象化并使其成为适用于所有“附加问题”的通用 javascript。

    然后我会创建事件侦听器来检查提交的表单是否有效(即,如果您有其他问题需要插入一些文本等等)。

    另一种方法可能是研究一些“多步骤表单包”。其中一些可能已经实现了类似的选项,这可能会对您的开发有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2017-10-21
      相关资源
      最近更新 更多