我正在研究调查包。目标是为用户提供一个完整的调查系统。 我已经准备了一个后端,它允许您创建调查,添加问题(打开文本,单选按钮,复选框),是否需要提问,激活调查,生成令牌以及使用电子邮件上的令牌发送调查链接。 当然,我也有前端显示调查并保存答案。 现在我想增加另一种可能性。答案(广播或复选框)和评论的问题。例如:
你有一只狗吗?
如果用户选择是,则选择其他字段"狗的名字是什么?"应该出现并允许用户输入狗的名字。 如果用户选择否,则不会发生任何事情。
这个简单的问题可以在隐藏的领域,但如果我将有20个问题与这样的"额外"信息?
你知道symfony中的一些机制可以让我这样做吗? 我正在尝试听众,但无法创建任何灵活和通用的内容(我可以对复选框提出问题,并且在一个问题中的一些答案可以包含其他不需要的其他字段)。
答案 0 :(得分:1)
我觉得你不能只做一个FormType
和表单事件监听器。如果您的目标是根据同一表单中用户的选择显示/隐藏其他问题,则还需要涉及一些javascript。 FormType
仅生成表单字段(以及任何嵌入/嵌套表单)。应使用JavaScript和FormEvent侦听器进行所有其他UI交互或动态验证。
我要做的是让一个事件监听器向所有问题无线电/复选框(具有其他问题/字段)添加属性(即data-has-additional
)。然后我会有一个jquery on()
侦听器,它会检查是否选中/取消选中了radio / checkbox,并根据它显示/隐藏其他字段的状态。您应该能够对此进行抽象,并使其成为适用于所有“其他问题”的通用JavaScript。
然后我会创建事件监听器来检查提交的表单是否有效(即如果你有一个额外的问题需要插入一些文本等等)。
另一种方法可能是研究一些“多步形式捆绑”。其中一些可能已经实施了类似的选项,这可能对您的开发有所帮助。