【问题标题】:Access request parameter in form type for modify form dynamically动态修改表单的表单类型访问请求参数
【发布时间】:2014-08-14 18:47:42
【问题描述】:

我有两种 Symfony2 不同的表单:一种用于注册普通用户,其字段仅属于 User 类型,另一种用于注册公司,再次使用仅属于 Company 类型的字段(两者都有不同的字段),因此它们依赖在 FOSUserBundle 用户类上,这意味着它们从 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. 根据用户数据生成表单,如文档中 here 的解释,但这应该建立在两步表单之上,对吧?一个用于选择表单类型,第二个用于显示/显示表单?那么如何使用 FOSUserBundle 呢?

现在我只是打电话给RegistrationFormType,它有来自 FOSUser 的公共字段,但实际上我需要添加新的表单,有什么想法或方法吗?

【问题讨论】:

    标签: php forms symfony fosuserbundle


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 2021-11-10
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2017-05-20
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多