Php 扩展EntityType-构造函数参数未传递
我用下面的类扩展了Symfony\Bridge\doctor\Form\Type\EntityTypePhp 扩展EntityType-构造函数参数未传递,php,doctrine-orm,symfony,Php,Doctrine Orm,Symfony,我用下面的类扩展了Symfony\Bridge\doctor\Form\Type\EntityType namespace Main\Form\Type; use /* ... */ class ExtendedEntityType extends EntityType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBu
namespace Main\Form\Type;
use /* ... */
class ExtendedEntityType extends EntityType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
/* ... */
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults( [
'invalid_message' => 'The selected entity does not exist',
]
);
}
/**
* @return string
*/
public function getParent()
{
return EntityType::class;
}
然后我还将其注册为服务
<services>
<service id="main.type.Extended_entity" class="Main\Form\Type\ExtendedEntityType">
<tag name="form.type_extension" extended-type="Symfony\Component\Form\Extension\Core\Type\EntityType"/>
<argument type="service" id="doctrine"/>
</service>
</services>
显然,由于某些原因,参数并没有传递到DoctrineType的构造函数中
我还试图覆盖构造函数并注入EntityManager,但我得到了相同的错误-没有参数传递到构造函数中。
我需要做些额外的事情才能让它工作吗
使用Symfony3。您在这里混合了两个概念 您正在扩展
EntityType
,这意味着您是,但您不是服务映射所建议的那样
这是两个独立的概念
您应该将服务映射标记从form\u extension
更改为form\u type
<services>
<service id="main.type.Extended_entity" class="Main\Form\Type\ExtendedEntityType">
<tag name="form.type" />
<argument type="service" id="doctrine"/>
</service>
</services>
<services>
<service id="main.type.Extended_entity" class="Main\Form\Type\ExtendedEntityType">
<tag name="form.type" />
<argument type="service" id="doctrine"/>
</service>
</services>