Symfony Form-埋め込みフォームオブジェクトを削除します
-
29-09-2019 - |
質問
私には2つのSymfonyフォームがあります:
ShoppingListForm
ShoppingListItemForm
ShoppingListItemformをShoppingListformの内部に何度も埋め込んでいます。つまり、買い物リストには多くのアイテムが含まれています。
したがって、ShoppingListItemformは2つのウィジェットで構成されています。
item_id (checkbox)
shopping_list_id (hidden - foreign key)
オブジェクトが存在し、チェックボックスがチェックされていないままになっている場合、対応するShoppingListItemオブジェクトを削除することです。
この削除がどのように発生するかわかりませんか? Post Balidatorを使用して、どのフィールドがチェックされていないかを確認しますか?私はこれに少し迷っています。
解決
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