Symfony表单 - 删除嵌入式表单对象
-
29-09-2019 - |
题
我有两种符合形式:
ShoppingListForm
ShoppingListItemForm
我多次将shopplistitemform嵌入购物清单中。即购物清单包含许多项目。
因此,shopplistItemform由两个小部件组成:
item_id (checkbox)
shopping_list_id (hidden - foreign key)
我想做的是如果对象存在并且未选中复选框,则删除相应的shopplistItem对象。
我不确定该删除将如何发生?我会使用帖子验证器查看尚未检查哪些字段?我对此有些迷失。
解决方案
我会通过过度载入ShoppingListform的UpdateObject方法并将您的自定义delete()等呼叫放入其中(确保在其中调用parent :: updateObject())来做到这一点。
根据您的实施方式,您可能还需要删除嵌入式表单及其值,以确保储蓄仍然适用于其余对象。尝试没有,但是如果您这样做,则需要清除以下内容:
unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
如果您想查看自定义updateObject方法以了解如何与值交互等:
其他提示
在人名中,我将循环浏览现有列表项目,以查看是否在操作中检查了相应的复选框,并致电 delete()
不是这种情况的项目。我认为这不是邮政验证者的目的,我会直接在操作中执行此操作。
不隶属于 StackOverflow