我想在表单中显示实体中的元素列表。在每个元素附近,它应该是一个删除按钮,它将删除entty中的特定元素。
你知道我怎么能这样做吗?
示例:3个实体:Person,Affiliation和PersonAffiliations。一个人有0或很多隶属关系。假设我为这个人创建了10个隶属关系,现在我想删除其中一个。如何创建表单以显示特定人员和每个联盟附近的所有从属关系列表,显示一个小的删除图标。单击此图标时,应删除此人的联属关系。
答案 0 :(得分:1)
你必须嵌入collection of forms并使用大量的Javascript。它位于 Symfony2 Cookbook !
中按照上面链接中提供的标签示例!很简单,你必须为每个要删除的子表单添加一个带有“ remove ”或“ x ”字符串的锚点,并使用Javascript处理删除。
表单插入是使用您需要添加的子表单的 Prototype 完成的,但似乎您不需要插入。
请注意,在您的示例中,您必须创建一个空的Person
对象,并向其添加预定义Affiliation
个对象的列表,以便FormBuilder
能够呈现与Affiliation
相关的表单。然后你可以用Javascript删除子表单。
当然,定义专用表单类型通常更好。
如果您只需要取消选择与主实体关系的实体列表,那么您可以使用entity field type,并且可以使用展开选项将其呈现为复选框列表。您的控制器将绑定实体和相关关系,因此Symfony将取消先前的关系。