symfony Form - löschen eingebettete Form Objekt
-
29-09-2019 - |
Frage
Ich habe eine zwei Symfony Formen:
ShoppingListForm
ShoppingListItemForm
Ich bin Einbettung der ShoppingListItemForm innerhalb der ShoppingListForm viele Male. das heißt eine Einkaufsliste viele Elemente enthält.
So ist die ShoppingListItemForm besteht aus zwei Widgets:
item_id (checkbox)
shopping_list_id (hidden - foreign key)
Was würde ich tun möchte, ist das entsprechende ShoppingListItem Objekt löschen, wenn das Objekt vorhanden ist, und das Kontrollkästchen ist nicht Einhalt geboten.
Ich bin mir nicht sicher, wie das Löschen auftreten würde? Würde ich einen Beitrag Validator nachschauen, welche Felder / nicht geprüft? Ich bin ein bisschen auf diesen einen verloren.
Lösung
Ich würde dies tun, indem über Reiten die update Methode des ShoppingListForm und setzen Ihre benutzerdefinierten löschen () usw. Anrufe dort (unbedingt Anruf parent :: update () in ihr).
Je nachdem, wie Sie es implementieren, können Sie auch die eingebetteten Formen und ihre Werte entfernen müssen noch sicherstellen, Speichern korrekt für die übrigen Objekte funktioniert. Versuchen Sie, ohne, aber wenn Sie das tun, müssen Sie die folgende löschen:
unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
Wenn Sie eine benutzerdefinierte Methode update um zu sehen, eine Vorstellung zu bekommen, wie mit Werten zu interagieren, etc:
Andere Tipps
personnally, würde ich Schleife durch die vorhandenen Listenelemente, um zu sehen, ob die entsprechenden Kontrollkästchen in der Aktion überprüft werden, und rufen Sie die delete()
Methode auf die Elemente, für die es nicht der Fall ist. Ich glaube nicht, dass der Zweck eines Post-Validator ist, würde ich in der Aktion dies direkt tun.