Форма Symfony - Удалить объект встроенной формы
-
29-09-2019 - |
Вопрос
У меня есть две формы симфона:
ShoppingListForm
ShoppingListItemForm
Я много раз внедряю ShoppingListemform в ShoppingListform. т.е. список покупок содержит много предметов.
Таким образом, ShoppingListiteMform состоит из двух виджетов:
item_id (checkbox)
shopping_list_id (hidden - foreign key)
Что я хотел бы сделать, так это удалить соответствующий объект ShophipListem, если объект существует, и флажок остается неконтролированным.
Я не уверен, как это удалить? Буду ли я использовать Validator Post, чтобы увидеть, какие поля имеют / не были проверены? Я немного потерян на этом.
Решение
Я бы сделал это, перевернув метод обновления updatebject ShoppingForm и поместив там пользовательские вызовы delete () и т. Д.
В зависимости от того, как вы его реализуете, вам также может потребоваться удалить встроенные формы и их значения, чтобы обеспечить сохранение все еще правильно работает для оставшихся объектов. Попробуйте без, но если вы это сделаете, вам нужно очистить следующее:
unset($taintedValues['ShoppingListItem'][$key]);
unset($this->embeddedForms['ShoppingListItem'][$key]);
unset($this->validatorSchema['ShoppingListItem'][$key]);
unset($taintedFiles['ShoppingListItem'][$key]);
Если вы хотите увидеть пользовательский метод UpdateObject, чтобы получить идею, как взаимодействовать со значениями и т. Д.
Другие советы
Лично я бы пробежал существующие элементы списка, чтобы увидеть, проверяются ли соответствующие флажки в действии, и вызовут delete()
Метод на элементы, для которых это не так. Я не думаю, что это цель пост -валидатора, я бы сделал это непосредственно в действии.