2017-02-22 93 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