EntityType作为输入字段?

时间:2017-02-22 01:19:47

标签: forms symfony

我尝试使用包含电子邮件字段(实体的两个字段之一)的CollectionType字段创建一个表单,我希望根据需要添加和删除。

以下是该方案:

我有三个实体:public Node<T> insert(Node<T> root, T data) { if(root==null) // Problem Use this.root { root= new Node<T>(data); // Same here use this.root = new .... return root; } ... User以及两者之间的关系{。}}。

实体Cluster有很多全方位的属性(ID,名称,电子邮件等)。实体ClusterAdministrator也有很多属性,其中一个是User,它是一个ArrayCollection。实体Cluster有3个属性:id,user和cluster。

我的BD拥有大约50,000名用户。如果我添加UserType的CollectionType字段,并且我的UserType是一个administrators作为正常EntityType的表单,app会崩溃,因为渲染这么大的选择框需要30多秒。如果我的UserType是一个带有ClusterAdministrator作为EmailType的表单,那么表单会很好地呈现(请参阅here),但是当我单击“保存”时,我会收到错误:

  

类型&#34; App \ AppBundle \ Entity \ User&#34;,&#34; string&#34;的预期参数;给定

如何通过显示电子邮件字段来完成此工作?

对不起伙计们,我是Symfony的新手。我非常感谢您的宝贵帮助。

1 个答案:

答案 0 :(得分:2)

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

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

如果需要,我可以在明天之后分享一些代码段。

希望这有帮助!