首页 > 解决方案 > 无法让 CollectionField 在 EasyAdmin 3.0 中工作

问题描述

我正在尝试在我的帐户实体中使用“标签”。所以

  1. 我有实体“帐户”
  2. 我有实体“标签”
  3. 在“帐户”实体中,我有
        /**
        * @ORM\ManyToMany(targetEntity=Tag::class, inversedBy="accounts")
        * @ORM\JoinTable(name="account_tag")
        */
        private $tags;
  1. 在“标签”实体中,我有
          /**
          * @ORM\ManyToMany(targetEntity=Account::class, mappedBy="tags")
          */
          private $accounts;
  1. 在我的 AccountCrudController => ConfigureFields 中,我使用“CollectionField”作为“标签”属性
         public function configureFields(string $pageName): iterable
         {
            return [

                 TextField::new('name'),
                  AssociationField::new('owner'),
                  AssociationField::new('parent'),
                  CollectionField::new('tags'),
            ];
         }
  1. 我低于[关联字段“App\Entity\Account#$tags”的“App\Entity\Tag”类型的预期值,而是得到“字符串”。1

标签: easyadmin

解决方案


您应该也可以在这里使用 AssociationField,这将符合您的目的。

AssociationField::new('tags') 将允许您引用现有标签。

如果您希望一起创建所有新标签,您可以使用类似这样的方法,因为目前无法在 AssociationField 中动态添加标签。

您是否尝试过像这样设置您的 CollectionField:

CollectionField::new('tags')
            ->allowAdd()
            ->allowDelete()
            ->setEntryType(TagType::class)
        ; 

重要的部分是您定义自己的 FormType 的 TagType。我也在尝试实现这个功能,所以如果你有一个完整的例子,请告诉我们!


推荐阅读