Forms symfony表单-删除嵌入的表单对象

Forms symfony表单-删除嵌入的表单对象,forms,symfony1,embedded-object,Forms,Symfony1,Embedded Object,我有两个Symfony表格: ShoppingListForm ShoppingListItemForm 我多次将ShoppingListItemForm嵌入到ShoppingListForm中。i、 购物清单上有许多物品 因此,ShoppingListItemForm由两个小部件组成: item_id (checkbox) shopping_list_id (hidden - foreign key) 我想做的是删除相应的ShoppingListItem对象,如果该对象存在并且复选框未选

我有两个Symfony表格:

ShoppingListForm
ShoppingListItemForm
我多次将ShoppingListItemForm嵌入到ShoppingListForm中。i、 购物清单上有许多物品

因此,ShoppingListItemForm由两个小部件组成:

item_id (checkbox) 
shopping_list_id (hidden - foreign key)
我想做的是删除相应的ShoppingListItem对象,如果该对象存在并且复选框未选中


我不确定这种删除是如何发生的?我是否会使用post验证器查看哪些字段已检查/未检查?我对此有点不知所措。

我个人会遍历现有的列表项,查看是否在操作中选中了相应的复选框,并对不适用的项调用
delete()
方法。我不认为这是后验证器的目的,我会直接在操作中这样做。

我会通过使用ShoppingListForm的updateObject方法并将自定义的delete()etc调用放在其中(确保在其中调用parent::updateObject())来实现这一点

根据实现方式的不同,您可能还需要删除嵌入的表单及其值,以确保对其余对象的保存仍然正确。尝试不使用,但如果使用,则需要清除以下内容:

unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
如果您想查看自定义updateObject方法以了解如何与值等交互: