formularios de Symfony - Eliminar formulario objeto incrustado
-
29-09-2019 - |
Pregunta
Tengo dos formas de Symfony:
ShoppingListForm
ShoppingListItemForm
Estoy incrustar el ShoppingListItemForm dentro de las ShoppingListForm muchas veces. Una lista de la compra es decir, contiene muchos elementos.
Así que la ShoppingListItemForm consta de dos widgets:
item_id (checkbox)
shopping_list_id (hidden - foreign key)
Lo que me gustaría hacer es eliminar el objeto ShoppingListItem correspondiente si existe el objeto y la casilla de verificación no se controla.
No estoy seguro de cómo esto podría ocurrir borrado? Me gustaría utilizar un post-validador para ver los campos que han / no han sido verificados? Estoy un poco perdido en este caso.
Solución
me gustaría hacer esto por el exceso de montar método updateObject del ShoppingListForm y poner su costumbre delete (), etc llamadas allí (Asegúrese de matriz llamada :: updateObject () dentro de ella).
En función de cómo ponerlo en práctica, también es posible que tenga que quitar los formularios embebidos y sus valores para asegurar el ahorro sigue funcionando correctamente para los objetos restantes. Sin intentar, pero si lo hace, es necesario aclarar lo siguiente:
unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
Si usted quiere ver un método updateObject personalizada para tener una idea de cómo interactuar con los valores etc:
Otros consejos
personalmente, me gustaría recorrer los elementos de lista existentes para ver si las casillas de verificación correspondientes se comprueban en la acción, y llame al método delete()
en los artículos para los que no es el caso. Creo que no es el propósito de un post-validador, Me gustaría hacer esto directamente en la acción.