我创建了一个symfony表单类型,我希望能够使用实体管理器。
所以我将它声明为symfony文档中提到的服务: http://symfony.com/doc/current/form/form_dependencies.html#define-your-form-as-a-service
现在我想创建另一个扩展第一个表单类型的表单类型。 但似乎我需要将这种新的表单类型声明为服务,即使它是从已经声明为服务的第一个扩展的。
是否可以告诉symfony检测新表单是否正在扩展第一个表单类型并自动注入父类的依赖项?
// src/AppBundle/Form/TaskType.php
use Doctrine\ORM\EntityManager;
class TaskType extends AbstractType
{
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
}
// ...
}
// src/AppBundle/Form/TaskObject1Type.php
use Doctrine\ORM\EntityManager;
class TaskObject1Type extends TaskType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
// ...
}
// ...
}
答案 0 :(得分:0)
您不应通过扩展类来扩展Symfony中的表单类型。
相反,使用getParent
方法指向父类型。
所以,改为
class ChildType extends ParentType
{
...
}
使用
class ChildType extends AbstractType
{
...
public function getParent()
{
return ParentType::class;
}
}
因此,您需要处理父类依赖项。