我有两种不同的Symfony2形式:一种用于注册普通用户,其字段仅属于用户类型,第二种用于注册公司,另一种用于仅属于公司类型的字段(两者都有不同的字段),因此他们依赖在FOSUserBundle用户类上,这意味着它们从FOSUser扩展。我应该为用户(通过网站导航的普通用户)添加注册为User
和Company
的功能,为此我创建了一个包含两个选项的简单SELECT元素。
我需要“动态”更改FOSUser注册的表单类型,但找不到合适的方法,这就是我寻求帮助的原因。
这就是我想到的,也许是一些疯狂的想法,也许是最糟糕的想法,但这是我能找到的唯一知识。
在config.yml
“动态”更改注册类(艰难不是一个好主意,因为我需要重新加载页面才能使更改生效或不生效)
services:
user.registration.form.type:
class: UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: user_form }
fos_user:
registration:
form:
type: user_form
根据用户数据生成表单作为文档中的解释here,但这应该以两步形式构建,对吧?一个用于选择表单类型,第二个用于显示/显示表单?如何使用FOSUserBundle?
现在我只是调用RegistrationFormType
来自FOSUser的公共字段,但是我需要添加新的表单,任何想法或方法吗?
答案 0 :(得分:1)
您可以检测select元素的onchange并执行AJAX请求以获得正确的表单吗? 然后,通过使用AJAX调用的方法获取表单。将FormType设置为服务,将请求作为参数传递(Symfony2 service parameters - passing the current request和此处http://symfony.com/doc/current/book/service_container.html#injecting-the-request),并构建表单?