Symfony Sonata-在admin中使用实体的存储库

Symfony Sonata-在admin中使用实体的存储库,symfony,symfony4,sonata-admin,Symfony,Symfony4,Sonata Admin,我正在用奏鸣曲做一个Symfony项目 上下文: 我得到了不同的实体: 产品(ID,类别(关系),特性值(关系)) 类别(ID,特征(关系)) 特征(ID,ID\u类别(关系),标签) 特性值(ID,ID\u产品(关系),ID\u特性(关系),value) 关系: 产品--OneToMany-->特性值 类别-->OneToMany-->特性 特征-->OneToMany-->特征值 产品--许多-->类别 问题: 我需要在ProductAdmin中获取产品类别的所有特征(以及它们的值,

我正在用奏鸣曲做一个Symfony项目

上下文:

我得到了不同的实体:

  • 产品(
    ID
    类别(关系)
    特性值(关系)
  • 类别(
    ID
    特征(关系)
  • 特征(
    ID
    ID\u类别(关系)
    标签
  • 特性值(
    ID
    ID\u产品(关系)
    ID\u特性(关系)
    value
关系:

  • 产品
    --OneToMany-->
    特性值
  • 类别
    -->OneToMany-->
    特性
  • 特征
    -->OneToMany-->
    特征值
  • 产品
    --许多-->
    类别
问题:

我需要在ProductAdmin中获取产品类别的所有
特征
(以及它们的
,如果它们已设置),并显示每个特征的输入(如Characteristic1:value1)

我所做的:

我试图调用
ProductAdmin
中的
CharacteristicValueRepository
函数,但存储库没有实例化

ProductAdmin的代码非常基本:

final class ProductAdmin extends AbstractAdmin
{
  protected function configureFormFields(FormMapper $formMapper)
  {

    $formMapper
    ->with('Product information', ['class' => 'col-md-6'])
        ->add('name', TextType::class, [
            'label' => 'Name of the product'
        ])
        ->add('categories', EntityType::class, [
            'class' => Category::class,
            'choice_label' => 'name',
            'multiple' => true,
            'label' => 'Categories of the product'
        ])
  ->end();

}

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper->add('name');
    $datagridMapper->add('categories');
}

protected function configureListFields(ListMapper $listMapper)
{
    $listMapper->add('id');
    $listMapper->addIdentifier('name');
    $listMapper->addIdentifier('categories');
}
}
注意事项:

我正在使用最新版本的一切(Symfony,Sonata,…)


如果有人知道如何帮助我,我将非常感激

您需要配置自定义表单类型,例如ProductCharacteristicsType。使用表单事件侦听器时,可以获取所有特征并形成适当的集合。这里有一个EAV(实体属性值)模型。这可能会给Symfony带来混乱,但它是可以管理的。在SonataAdmin上,您必须使用您的自定义类型