gpt4 book ai didi

php - 扩展 Doctrine2 形式 EntityType

转载 作者:行者123 更新时间:2023-12-02 06:14:56 25 4
gpt4 key购买 nike

我正在寻找一种方法来扩展 Symfony 2 EntityType

Symfony\Bridge\Doctrine\Form\Type\EntityType

作为扩展此类型的新类型,而不是创建 FormTypeExtension - 我无法弄清楚。有谁知道这样做的正确方法吗?

我试过简单地以这种方式扩展它:

class NestedEntityType extends EntityType {

public function getName() {
return $this->getBlockPrefix();
}

public function getBlockPrefix() {
return 'nested_entity';
}
}

然后在奏鸣曲管理课上我有:

protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('types', NestedEntityType::class, [
'label' => false,
'multiple' => true,
'expanded' => true,
'by_reference' => false
]);
}

但不幸的是它会导致 fatal error :

Catchable Fatal Error: Argument 1 passed to Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct() must implement interface Doctrine\Common\Persistence\ManagerRegistry, none given, called in

我需要保留 EntityType 的全部功能,只有一个异常(exception) - 它的呈现方式。这就是为什么我需要扩展这个类型(我在其他领域使用它,所以我不能只为它修改模板!)。

我正在使用 Symfony 2.8(仅作记录)。

最佳答案

你不应该直接扩展它,而是使用 parent 选项

/**
* {@inheritdoc}
*/
public function getParent()
{
return EntityType::class;
}

有点像

class NestedEntityType extends AbstractType 
{

public function getName()
{
return $this->getBlockPrefix();
}

public function getBlockPrefix()
{
return 'nested_entity';
}

/**
* {@inheritdoc}
*/
public function getParent()
{
return EntityType::class;
}
}

那样的话,如果你要扩展的 FormType 有一些东西注入(inject)(或设置)到构造函数中,你不需要关心,因为 symfony 会为你做这件事。

关于php - 扩展 Doctrine2 形式 EntityType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39512428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com