Domanda

Ho un due forme Symfony:

ShoppingListForm
ShoppingListItemForm

sto incorporando lo ShoppingListItemForm all'interno delle ShoppingListForm molte volte. vale a dire una lista della spesa contiene molti elementi.

Così lo ShoppingListItemForm si compone di due widget:

item_id (checkbox) 
shopping_list_id (hidden - foreign key)

Quello che vorrei fare è eliminare l'oggetto corrispondente ShoppingListItem se l'oggetto esiste e la casella di controllo è lasciato incontrollato.

Non sono sicuro di come questo si sarebbe verificato di eliminazione? Dovrei usare un post validatore per vedere quali campi sono / non sono stati controllati? Sono un po 'perso su questo.

È stato utile?

Soluzione

mi piacerebbe fare questo da un eccesso di sella il metodo updateObject del ShoppingListForm e mettendo cancellare la vostra abitudine () ecc chiamate in là (assicuratevi di genitore chiamata :: updateObject () all'interno di esso).

A seconda di come si implementa, si può anche essere necessario rimuovere i moduli incorporati ei loro valori per garantire il salvataggio funziona ancora correttamente per i restanti oggetti. Provare senza, ma se lo fai, è necessario cancellare il seguente:

unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);

Se volete vedere un metodo updateObject personalizzato per avere un'idea di come interagire con i valori etc:

http: //www.symfony-project .org / forme / 1_2 / it / 11-Dottrina-Integrazione # chapter_11_sub_customizing_the_updateobject_method

Altri suggerimenti

personalmente, avrei ciclo tra gli elementi di elenco esistenti per vedere se le caselle di controllo corrispondenti sono controllati in azione, e chiamare il metodo delete() sui punti per i quali non è il caso. Non credo che è lo scopo di un post validatore, vorrei farlo direttamente nell'azione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top