繁体   English   中英

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

[英]Sonata - Use the repository of an entity in admin

我正在使用Sonata进行Symfony项目。

语境:

我有不同的实体:

  • 产品( IDcategories (relation)characteristicValues (relation)
  • 类别( IDcharacteristics (relation)
  • 特征( IDid_category (relation)label )。
  • CharacteristicValue( IDid_product (relation)id_characteristic (relation)value

关系:

  • 产品--OneToMany-->特性值
  • 类别-->OneToMany-->特征
  • 特征-->OneToMany-->特征值
  • 产品--ManyToMany-->类别

问题:

我需要在ProductAdmin中获取产品类别的所有characteristics (以及它们的values如果设置了它们的values )),并显示每个特征的输入(例如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。 使用Form Event侦听器时,您可以获取所有特征并形成适当的集合。 您这里拥有的是EAV(实体属性值)模型。 这可能会给Symfony造成混乱,但是这是可以控制的。 在SonataAdmin上,您必须使用该自定义类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM