2017-02-22 66 views
0

我试图创建一个包含一个电子邮件字段(这是一个实体的两个字段之一)的CollectionType字段的形式,我想添加和删除,因为我希望。EntityType作为输入字段?

这里的情景:

我有三个实体:UserCluster两者之间的关系称为ClusterAdministrator

实体User有很多全面的属性(ID,名称,电子邮件等)。实体Cluster也有很多属性,其中之一是administrators,它是一个ArrayCollection。实体ClusterAdministrator有3个属性:id,用户和集群。

我的BD有大约5万用户。如果我添加一个UserType的CollectionType字段,并且我的UserType是一个user作为普通EntityType的表单,那么应用程序将会崩溃,因为它需要超过30秒的时间来渲染这样一个巨大的选择框。如果我在我的用户类型是user作为EMAILTYPE一种形式,形式也呈现(见here),但是当我点击保存我的错误:

Expected argument of type "App\AppBundle\Entity\User", "string" given

如何使这项工作只是通过展示邮箱字段?

对不起,我是Symfony的新手。我会感谢你的宝贵帮助。

回答

1

您应该使用Data Transformer可在Symfony。变换器所做的就是将字符串(用户名或电子邮件)转换为相关的用户对象。哪个应该解决你的问题。

为了更好的用户体验,您可以在jQuery的帮助下将文本框转换为autocomplete。我很久以前就用它。我使用PUGXAutoCompleteBundle来生成一个自动填充字段,并创建一个自定义的Transformer将对象提供给父实体。

如果需要,我可以在明天晚些时候分享一些代码片段。

希望这会有所帮助!

+0

非常感谢Jeet。这是我猜测的正确方法。这几天我一直在尝试变形金刚,我想我在那里搞定了。非常感谢 – andregoncalves