我有两个Symfony2不同的表单:一个用于注册普通用户,其字段仅属于用户类型,第二个用于注册公司,并且再次具有仅属于公司类型的字段(两者都有不同的字段),因此它们依赖于FOSUserBundle User类,这意味着它们从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
-
根据文档中解释的用户数据生成表单,但这应该建立在两步表单上,对吗?一个用于选择表单类型,第二个用于显示/显示表单。如何做到这一点,然后使用FOSUserBundle?
现在我只是调用RegistrationFormType
,其中有来自FOSUser的公共字段,但动态地我需要添加新的形式,任何想法或方法?
您可以检测到select元素上的onchange并执行AJAX请求以获得正确的表单?然后,通过AJAX调用的方法获取表单。将FormType设置为服务,将请求作为参数传递(Symfony2服务参数-传递当前请求和此处http://symfony.com/doc/current/book/service_container.html#injecting-the-request),然后构建表单?