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.

¿Fue útil?

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:

http: //www.symfony-project .org / formas / 1_2 / en / 11-Doctrina-Integración # chapter_11_sub_customizing_the_updateobject_method

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top