Php 用于动态修改表单的表单类型中的访问请求参数

Php 用于动态修改表单的表单类型中的访问请求参数,php,forms,symfony,fosuserbundle,Php,Forms,Symfony,Fosuserbundle,我有两个Symfony2不同的表单:一个用于使用只属于某个用户类型的字段注册普通用户,另一个用于注册公司,另一个用于使用只属于公司类型的字段(两者都有不同的字段),因此它们依赖于FOSUserBundle用户类,这意味着它们从FOSUser扩展而来。我应该为用户(通过网站导航的普通用户)添加注册为用户和公司的功能,为此,我使用两个选项创建了一个简单的SELECT元素 我需要“动态”更改FOSUser注册的表单类型,但找不到好的方法,这就是我寻求帮助的原因 这就是我的想法,也许是一些疯狂的想法,也

我有两个Symfony2不同的表单:一个用于使用只属于某个用户类型的字段注册普通用户,另一个用于注册公司,另一个用于使用只属于公司类型的字段(两者都有不同的字段),因此它们依赖于FOSUserBundle用户类,这意味着它们从FOSUser扩展而来。我应该为用户(通过网站导航的普通用户)添加注册为
用户
公司
的功能,为此,我使用两个选项创建了一个简单的SELECT元素

我需要“动态”更改FOSUser注册的表单类型,但找不到好的方法,这就是我寻求帮助的原因

这就是我的想法,也许是一些疯狂的想法,也许是最糟糕的,但这是我能找到的唯一的知识

  • config.yml
    中“动态”更改注册类(这不是一个好主意,因为我需要重新加载页面才能使更改生效或不生效)

  • 根据用户数据生成表单,如文档中所述,但这应该基于两步表单,对吗?一个用于选择表单类型,另一个用于显示/显示表单?那么如何使用FOSUserBundle实现这一点呢


  • 现在我正在调用
    RegistrationFormType
    ,它有来自FOSUser的公共字段,但实际上我需要添加新表单,有什么想法或方法吗?

    您可以检测所选元素的一次更改,并执行AJAX请求以获得正确的表单?
    然后,使用AJAX调用的方法获取表单。将FormType设置为服务,将请求作为参数传递(和此处),然后构建表单?

    请参见此处,也许这对您有帮助?
    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