Symfony 2在用户站点上动态添加字段以形成表单 - php

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

你有一只狗吗?


没有

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

这样的简单问题可能与隐藏字段有关,但是如果我将有20个带有此类“附加”信息的问题怎么办?

您知道symfony中的某种机制可以使我做到这一点吗?
我正在尝试使用侦听器,但无法创建任何灵活且通用的东西(我可以使用复选框来提问,而其中一个问题中的某些答案可以包含其他字段,而不必这样做)。

参考方案

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

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

然后,我将创建事件侦听器,以检查提交的表单是否有效(即您是否还有其他问题需要插入一些文本,依此类推)。

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

Symfony 2:如何通过路由名称获取默认路由? - php

是否可以通过名称检索有关某条路线的信息,或获取所有路线的列表?我需要能够获取任意路径的_controller中的defaults值,而不仅仅是当前路径。这有可能吗?P.S .:我发现我可以找到使用YAML的路由,但是重新解析似乎是不必要且繁重的。 参考方案 我真的很擅长回答自己的问题。要获取路由,请在路由器上(控制器内的getRouteCollection(…

原则实体管理器和多线程更新数据库 - php

我目前有一个XHR请求,可以从客户端启动N次。该请求由服务器处理,每个请求通常在数据库中创建一个新行(所有原则/ xml)。在我对对象进行persist()之前,请确保是否具有唯一的文件名(我正在上传资产),并且通过重写persist(),调用我的getUniqueFilename()然后调用parent :: persist来做到这一点。当我执行多个带有相…

如何从Symfony的HttpFoundation组件检索基本身份验证凭据? - php

我想从Symfony的HttpFoundation组件中检索基本的身份验证凭据。粗略地看文档并没有发现任何东西。有办法吗?(我在不基于Symfony框架的应用程序中使用HttpFoundation组件。) 参考方案 可以通过$_SERVER['PHP_AUTH_USER']实例以下列方式访问$_SERVER['PHP_AUTH_…

symfony 2路由模型 - php

Sf2.0,例如标准博客。routing.yml代码:DevBlogBundle_post_show: pattern: /posts/{id} defaults: { _controller: "DevBlogBundle:Post:show" } requirements: _method: GET id: \d+ 我使用以下方法为我…

在Symfony中键入提示json对象 - php

在我的Symfony 2.3项目中,我有一个curl函数,该函数从API接收JSON数据,并将该数据作为参数传递给另一个函数。当前,接受JSON对象的函数如下所示:public function updateCountries($data) { foreach (json_decode($data, true) as $key => $value) {…