代码之家  ›  专栏  ›  技术社区  ›  ReynierPM

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

  •  0
  • ReynierPM  · 技术社区  · 10 年前

    我有两种不同的Symfony2形式:一种用于注册普通用户,字段仅属于用户类型,另一种用于登记公司,另一个用于注册公司,字段仅属公司类型(两者都有不同的字段),因此它们依赖于FOSUserBundle用户类,这意味着它们从FOSUser扩展。我应该增加用户(在站点中导航的普通用户)注册为 User 作为一个 Company 为此,我做了一个简单的SELECT元素,其中包含两个选项。

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

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

    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. 根据解释的用户数据生成表单 here 在文档中,但这应该建立在两个步骤的基础上,对吗?一个用于选择表单类型,另一个用于显示/显示表单?如何使用FOSUserBundle完成此操作?

    现在我只是打电话给 RegistrationFormType 其中有FOSUser的共同领域,但通常我需要添加新的形式,任何想法或方法?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Community Egal    7 年前

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