Сценарий : мне нужно создать предложение для клиентов. Каждое предложение содержит список товаров, относящихся к товарам в базе данных. Эти продукты могут иметь разные варианты / опции, которые влияют на ценообразование (которое рассчитывается динамически при изменении - здесь нет проблем). В моей форме есть автозаполнение для названий продуктов, которое добавляет элементы, назначенные выбранному продукту, в коллекцию.
Проблема : При работе с коллекциями способ обработки добавления элементов в symfonys - это прототипы . К сожалению, этот процесс полностью обрабатывается на стороне клиента, и поэтому не указан контекст, который мог бы вызвать событие формы для добавления полей, зависящих от продукта.
У меня есть несколько решений, которые могут решить эту проблему, но мне интересно есть ли какая-то передовая практика для этой проблемы?
Решение 1. Форма автоматической отправки после выбора продукта
Это самое простое решение, поскольку после создания нового элемента с продуктом на стороне сервера у меня нет проблем с работой с событиями формы, и я могу добавлять поля по мере необходимости. Однако форма будет перезагружаться каждый раз, что не очень хорошо с точки зрения UX.
Решение 2. Не используйте прототип и не создавайте форму для непостоянного фиктивного объекта на стороне сервера.
Это было бы немного сложнее. При добавлении продукта сценарий на стороне сервера создаст элемент с назначенным продуктом и создаст для него форму. Я думаю, что с этим есть несколько проблем, например, относительно идентификаторов форм / имен полей. В настоящее время это мое предпочтительное решение.
Решение 3. Возможна визуализация всех полей и их динамическое скрытие, если они не нужны (невозможно)
Это невозможно, так как поля слишком динамичный c для этого. Существует даже связь «один ко многим» между элементами и дополнительными параметрами, которые необходимо отобразить. Поэтому знание контекста продукта является обязательным.
Ресурсы:
Проблема с github 8-летней давности для этого topi c