gpt4 book ai didi

symfony-forms - Symfony 2.8/3.0 升级 : how to deal with form types with variable parameters?

转载 作者:行者123 更新时间:2023-12-04 05:31:32 24 4
gpt4 key购买 nike

假设我将自定义表单类型创建为服务,如 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

然后,我声明了 2 个这样的服务:
<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundle\Form\Type\GenderType">
<argument>%genders1%</argument>
<tag name="form.type" alias="gender1" />
</service>

<service id="app.form.type.gender2" class="AppBundle\Form\Type\GenderType">
<argument>%genders2%</argument>
<tag name="form.type" alias="gender2" />
</service>

如您所见,我使用的是 GenderType 2 个自定义表单类型的类(使用 gender1gender2 别名),我可以这样使用:
$builder
->add('field1', 'gender1')
->add('field2', 'gender2');

这允许我仅在具有不同输入参数的一类( GenderType )中添加一些常见逻辑(在本例中我有比 2 更多的可能性)。

但是从 Symfony 2.8 开始,不推荐使用服务别名添加字段。类名必须作为第二个参数传递,如下所示:
$builder->add('field1', GenderType::class)

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

正在创建 Gender1TypeGender2Type扩展摘要 GenderType类真的很痛苦,因为我必须创建很多内容空洞的类。

你知道如何在 Symfony 2.8 中实现我的模式,使用不同的输入参数保持服务,但不创建很多类吗?

最佳答案

好吧,在深入挖掘这个话题之后,someone already asked问题直接在PR concerning this change在 Symfony 2.8 中。

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

  • 为我的自定义类型创建尽可能多的类,而不是一直使用同一个类,并使这些类扩展一个抽象类(在我的示例中:创建 Gender1TypeGender2Type 扩展 AbstractGenderType 的类抽象类)
  • 只保留一个类,但添加选项以传递我的特定参数。
  • 关于symfony-forms - Symfony 2.8/3.0 升级 : how to deal with form types with variable parameters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34131273/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com