我有两种Symfony形式:
ShoppingListForm
ShoppingListItemForm
我在ShoppingListForm中多次嵌入ShoppingListItemForm。即购物清单包含许多物品。
所以ShoppingListItemForm包含两个小部件:
item_id (checkbox)
shopping_list_id (hidden - foreign key)
如果对象存在且未选中复选框,我想要删除相应的ShoppingListItem对象。
我不确定这种删除会怎样?我是否会使用帖子验证器查看哪些字段已经检查过?我在这一点上有点失落。
答案 0 :(得分:4)
我是通过覆盖ShoppingListForm的updateObject方法并在其中放置自定义delete()等调用来实现的(确保在其中调用parent :: updateObject())。
根据您的实现方式,您可能还需要删除嵌入的表单及其值,以确保保存仍然可以正常用于其余对象。试试没有,但如果你这样做,你需要清除以下内容:
unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
如果要查看自定义updateObject方法以了解如何与值等进行交互:
答案 1 :(得分:0)
在个人情况下,我会遍历现有列表项以查看是否在操作中选中了相应的复选框,并对不是这种情况的项目调用delete()
方法。我不认为这是后验证者的目的,我会直接在行动中这样做。