Вопрос

У меня есть две формы симфона:

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, чтобы получить идею, как взаимодействовать со значениями и т. Д.

http://www.symfony-project.org/forms/1_2/en/11-doctrine-integration#chapter_11_sub_customize_the_updateobject_method

Другие советы

Лично я бы пробежал существующие элементы списка, чтобы увидеть, проверяются ли соответствующие флажки в действии, и вызовут delete() Метод на элементы, для которых это не так. Я не думаю, что это цель пост -валидатора, я бы сделал это непосредственно в действии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top