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


Access request parameter in form type for modify form dynamically

我有两个Symfony2不同的表单:一个用于注册普通用户,其字段仅属于用户类型,第二个用于注册公司,并且再次具有仅属于公司类型的字段(两者都有不同的字段),因此它们依赖于FOSUserBundle User类,这意味着它们从FOSUser扩展。我应该为用户(通过网站导航的普通用户)添加注册为UserCompany的能力,为此,我使用两个选项做了一个简单的SELECT元素。

我需要"动态地"改变FOSUser注册的表单类型,但找不到一个好的方法,这就是为什么我寻求帮助。

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

  1. 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
    
  2. 根据文档中解释的用户数据生成表单,但这应该建立在两步表单上,对吗?一个用于选择表单类型,第二个用于显示/显示表单。如何做到这一点,然后使用FOSUserBundle?

现在我只是调用RegistrationFormType,其中有来自FOSUser的公共字段,但动态地我需要添加新的形式,任何想法或方法?

您可以检测到select元素上的onchange并执行AJAX请求以获得正确的表单?然后,通过AJAX调用的方法获取表单。将FormType设置为服务,将请求作为参数传递(Symfony2服务参数-传递当前请求和此处http://symfony.com/doc/current/book/service_container.html#injecting-the-request),然后构建表单?