Кто-нибудь знает, как добавить дополнительное поле (идентификатор НДС, предоставляемый Infinitepay Bundle) в регистрационную форму oroCommerce? Я не могу найти способ сделать это.
Проблема заключается в том, что это поле не является частью сущности CustomerUser, а связано с сущностью Customer. Поэтому обычная команда builder-> add () не работает. У меня также возникают проблемы с поиском способа поместить любой код в собственный пакет и заставить его работать (вместо взлома ядра). Я уже читал документы Symfony, но они не сильно помогли.
Во-первых, вам нужно создать расширение формы Symfony, см. документация
Затем добавьте поле идентификатора НДС в конструктор форм и добавьте прослушиватель POST_SUBMIT с более низким приоритетом, чем этот
В коде слушателя вы можете сопоставить значение идентификатора НДС с сущностью Customer.
UPD:
- Как именно я должен использовать расширения типа формы?
Хорошо. Использовать этот суть
Документация говорит, что они хороши для расширения типов полей, а не форм.
Это то же самое. Любой тип формы может использоваться как дочерний элемент (поле) другого типа формы.
Я не могу сделать это с помощью $ builder-> add () — это дает ошибку 500, потому что у объекта нет этого поля.
Вы должны добавить опцию ‘mapped => false’ для вашего поля. Увидеть документация
Мне также нужен способ поместить его в свой собственный пакет, а не в ядро.
Вы можете изменить любой тип формы из собственного пакета, используя расширения типа формы. Это то, для чего они были созданы.
Других решений пока нет …