easyadmin - 无法让 CollectionField 在 EasyAdmin 3.0 中工作
问题描述
我正在尝试在我的帐户实体中使用“标签”。所以
- 我有实体“帐户”
- 我有实体“标签”
- 在“帐户”实体中,我有
/**
* @ORM\ManyToMany(targetEntity=Tag::class, inversedBy="accounts")
* @ORM\JoinTable(name="account_tag")
*/
private $tags;
- 在“标签”实体中,我有
/**
* @ORM\ManyToMany(targetEntity=Account::class, mappedBy="tags")
*/
private $accounts;
- 在我的 AccountCrudController => ConfigureFields 中,我使用“CollectionField”作为“标签”属性
public function configureFields(string $pageName): iterable
{
return [
TextField::new('name'),
AssociationField::new('owner'),
AssociationField::new('parent'),
CollectionField::new('tags'),
];
}
- 我低于[关联字段“App\Entity\Account#$tags”的“App\Entity\Tag”类型的预期值,而是得到“字符串”。1
解决方案
您应该也可以在这里使用 AssociationField,这将符合您的目的。
AssociationField::new('tags') 将允许您引用现有标签。
如果您希望一起创建所有新标签,您可以使用类似这样的方法,因为目前无法在 AssociationField 中动态添加标签。
您是否尝试过像这样设置您的 CollectionField:
CollectionField::new('tags')
->allowAdd()
->allowDelete()
->setEntryType(TagType::class)
;
重要的部分是您定义自己的 FormType 的 TagType。我也在尝试实现这个功能,所以如果你有一个完整的例子,请告诉我们!
推荐阅读
- google-apps-script - Get current user inside getData of Datastudio community connector
- haxe - “结构有额外字段”错误背后的原因是什么
- c# - Fluent ftp 获取最新文件并下载
- python - 如何在 Python 中将列表作为参数传递和访问
- excel - 激活没有文件名但使用扩展名的工作簿
- c# - UWP C# StreamSocket TCP 发送心跳消息到监控设备
- html - 在没有 javascript 的情况下在较低宽度尺寸上创建响应式导航栏
- r - 如何使用 dplyr 为函数传递单行
- javascript - Vimeo 直接文件源和网络播放质量
- excel - 设置工作簿对象我收到错误“9”:下标超出范围