奏鸣曲 - 使用管理中的实体的存储库



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

上下文:

我有不同的实体:

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

关系:

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

问题:

我需要在ProductAdmin中获取产品类别(及其values的类别)的所有characteristics,并为每个产品显示一个输入(例如特征1: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上,您必须使用您的自定义类型。

相关内容

  • 没有找到相关文章

最新更新