加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

symfony-forms – Symfony 2.8 / 3.0升级:如何处理带有可变参数

发布时间:2020-12-14 23:27:32 所属栏目:资源 来源:网络整理
导读:假设我创建自定义表单类型作为服务,如 Symfony documentation中所述.但我想要2个“性别”自定义类型,有2个不同的输入参数,我在Symfony 2.7中这样做: # app/config/config.ymlparameters: genders1: m: Male f: Female genders2: # This makes no sense at a
假设我创建自定义表单类型作为服务,如 Symfony documentation中所述.但我想要2个“性别”自定义类型,有2个不同的输入参数,我在Symfony 2.7中这样做:
# app/config/config.yml
parameters:
    genders1:
        m: Male
        f: Female
    genders2: # This makes no sense at all,but it is for the example purpose!
        h: Horse
        t: Turtle

然后,我宣布了两个这样的服务:

<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundleFormTypeGenderType">
    <argument>%genders1%</argument>
    <tag name="form.type" alias="gender1" />
</service>

<service id="app.form.type.gender2" class="AppBundleFormTypeGenderType">
    <argument>%genders2%</argument>
    <tag name="form.type" alias="gender2" />
</service>

正如您所看到的,我使用相同的GenderType类用于2种自定义表单类型(包含gender1和gender2别名),我可以像这样使用:

$builder
    ->add('field1','gender1')
    ->add('field2','gender2');

这允许我在一个具有不同输入参数的类(GenderType)中添加一些通用逻辑(在这个例子中,我有比2更多的可能性).

但是从Symfony 2.8开始,不推荐使用服务别名添加字段.类名必须作为第二个参数传递,如下所示:

$builder->add('field1',GenderType::class)

那么如何才能区分我的2个服务(每个服务都没有相同的输入参数)?

创建Gender1Type和Gender2Type扩展一个抽象的GenderType类会非常痛苦,因为我必须用空内容创建很多类.

您是否知道如何在Symfony 2.8中实现我的模式,保持服务具有不同的输入参数,但不创建很多类?

解决方法

好吧,经过多次挖掘这个话题后,someone already asked直接在Symfony 2.8的 PR concerning this change中提出了问题.

答案是我正在做的模式不再可能,所以我看到了我的问题的两个解决方案:

>创建与我的自定义类型的服务一样多的类,而不是一直使用相同的类,并使这些类扩展为抽象类(在我的示例中:创建扩展AbstractGenderType抽象类的Gender1Type和Gender2Type类)>只保留一个类,但添加选项以传递我的特定参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读