【发布时间】:2025-11-24 15:00:01
【问题描述】:
我知道还有 2 个关于它的其他问题,但我认为它们都不能解决我要问的问题。
在 Symfony 2.8 中,有一个弃用说明,关于使用“别名”来标记定义为服务的表单,可以使用它传递给“createForm”来获取表单。
所以如果我错了请纠正我,现在我们必须定义没有别名标签的服务:
#src/MyBundle/Resources/config/services.yml
my.form.as.service:
class: MyBundle\Form\Type\MyFormType
arguments: ["@doctrine.orm.entity_manager",%myparameter1%]
tags: { - name: form.type }
在控制器中:
$form = $this->createForm('my.form.as.service');
但这给了我一个表单命名错误,因为表单在 getName 函数中返回“my_name”,并且它希望表单接收 FQCN。好的,在控制器中的其他响应之后我更改为:
use MyBundle\Form\Type\MyFormType;
...
$form = $this->createForm(MyFormType::class)
这行得通,并且在 github symfony 成员中说表单组件完成了所有工作......但是如果我想定义一个具有相同类但使用另一个参数而不是 %parameter1% 的第二个服务怎么办。在 2.8 和更早版本中,我能够定义另一个服务并将其名称传递给 createForm 函数,但现在它直接获取类,我可以这样做吗? (我知道这样做可能很奇怪或不必要或......)。
对于 symfony 成员:我同意 Javiereguiluz 的意见,这种变化会让您编写更多代码,并且让您无法完全控制表单组件如何使用您的服务。是否有必要删除表单别名以使我们的生活如此复杂?谢谢!
【问题讨论】:
标签: php forms symfony-forms symfony