Mic*_*rin 5 symfony-forms symfony symfony-2.8
假设我将自定义表单类型创建为服务,如Symfony文档中所述.但我想要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
Run Code Online (Sandbox Code Playgroud)
然后,我宣布了两个这样的服务:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我使用相同的 GenderType类来处理2种自定义表单类型(使用gender1和gender2别名),我可以这样使用:
$builder
->add('field1', 'gender1')
->add('field2', 'gender2');
Run Code Online (Sandbox Code Playgroud)
这允许我在一个GenderType具有不同输入参数的类()中添加一些公共逻辑(在这个例子中我有比2更多的可能性).
但是从Symfony 2.8开始,不推荐使用服务别名添加字段.类名必须作为第二个参数传递,如下所示:
$builder->add('field1', GenderType::class)
Run Code Online (Sandbox Code Playgroud)
那么如何才能区分我的2个服务(每个服务都没有相同的输入参数)?
创建Gender1Type和Gender2Type扩展抽象GenderType类会非常痛苦,因为我必须创建大量具有空内容的类.
您是否知道如何在Symfony 2.8中实现我的模式,保持服务具有不同的输入参数,但不创建很多类?
好吧,在深入研究这个话题之后,有人已经在PR 中直接提出了有关 Symfony 2.8 中这一变化的问题。
答案是我正在做的模式不再可能了,所以我看到了解决我的问题的两种解决方案:
Gender1Type并Gender2Type扩展AbstractGenderType抽象类的类)| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |