Когда я отправляю коллекцию с удаленными элементами, мои элементы удаляются правильно, но я не понимаю, как Symfony удаляет элементы.
Когда я die();
, скрипт не останавливается на моем методе удаления, поэтому я думаю, что Symfony не переходит в мой метод. Итак, как Symfony может удалить мои элементы без вызова моего метода удаления? Как это работает?
Контекст приложения:
Я получил некоторые данные из API, и я просто хочу добавить или удалить данные из своего веб-интерфейса. Итак, после добавления / удаления данных я просто хочу опубликовать новый объект в API и удалить соответствующие строки. Я также могу сравнить исходный объект (получить из API) при предварительной отправке и новый объект после отправки, чтобы увидеть различия между ними. Но, если существует метод для вызова средства удаления моего объекта, мне не нужно использовать это второе решение, и я думаю, что первое решение с средством удаления личного состава лучше.
Пример моего средства удаления:
public function removeMyElement($myElement)
{
personnalMethodTreatment($myElement);
if (!$this->myElement->contains($myElement)) {
return;
}
$this->myElement->removeElement($myElement);
}
Спасибо за вашу помощь!
РЕШЕНИЕ
Итак, спасибо всем за помощь. Я пишу эти строки, чтобы помочь другим людям, которые будут иметь такую же проблему.
По умолчанию Symfony вызывает этот собственный съемник. Если вы хотите вызвать пользовательское средство для удаления, добавьте параметр by_reference
на false
к типу формы вашей коллекции.
by_reference: false
Дополнительная информация о by_reference
https://symfony.com/doc/current/reference/forms/types/collection.html#by -reference
В заключение, по умолчанию Symfony вызовите пользовательский метод в следующем порядке:
Setter
> Remover
Итак, если у вас есть установщик и съемник, Symfony предпочтет первое.
Чтобы решить мою проблему, я следовал прецедентным инструкциям и записал свое специфическое c лечение в мой сеттер.
Надеясь помочь людям .