Dependency injection Don';t将扩展表单类型重新声明为服务以传递父参数

Dependency injection Don';t将扩展表单类型重新声明为服务以传递父参数,dependency-injection,symfony,symfony-forms,Dependency Injection,Symfony,Symfony Forms,我创建了一个symfony表单类型,希望能够在其中使用实体管理器 因此,我将其声明为symfony文档中提到的服务: 现在我想创建另一个表单类型,扩展第一个表单类型。 但似乎我也需要将这个新表单类型声明为服务,即使它是从第一个已声明为服务的表单类型扩展而来 是否可以告诉symfony检测新表单正在扩展第一个表单类型并自动注入父类的依赖项 //src/AppBundle/Form/TaskType.php 使用条令\ORM\EntityManager; 类TaskType扩展了AbstractT

我创建了一个symfony表单类型,希望能够在其中使用实体管理器

因此,我将其声明为symfony文档中提到的服务:

现在我想创建另一个表单类型,扩展第一个表单类型。 但似乎我也需要将这个新表单类型声明为服务,即使它是从第一个已声明为服务的表单类型扩展而来

是否可以告诉symfony检测新表单正在扩展第一个表单类型并自动注入父类的依赖项

//src/AppBundle/Form/TaskType.php
使用条令\ORM\EntityManager;
类TaskType扩展了AbstractType
{
私人股本$em;
公共函数构造(EntityManager$em)
{
$this->em=$em;
}
公共函数buildForm(FormBuilderInterface$builder、array$options)
{
// ...
}
// ...
}
//src/AppBundle/Form/TaskObject1Type.php
使用条令\ORM\EntityManager;
类TaskObject1Type扩展了TaskType
{
公共函数buildForm(FormBuilderInterface$builder、array$options)
{
父::buildForm($builder,$options);
// ...
}
// ...
}

您不应该通过扩展类来扩展Symfony中的表单类型。 相反,use应该使用
getParent
方法指向父类型

因此,取而代之的是

class ChildType extends ParentType
{
    ...
}
使用


因此,您需要处理父类依赖关系。

这不符合预期,因为我需要调用父构建表单(请参阅我编辑的文章)。我试图同时添加
扩展父类型
和方法
getParent()
,但我仍然有
太少的参数
例外。简短的回答是否。表单组件使用表单类型类名从容器中提取服务。我想您可以尝试查找该代码,看看是否可以修改它,但为了避免添加几行服务定义,这将是大量的工作。有一个父服务功能可能会有所帮助:
class ChildType extends AbstractType
{
    ...
    public function getParent()
    {
        return ParentType::class;
    }
}