oroCommerce / Symfony 2.8 — как добавить настраиваемое поле в форму регистрации

Кто-нибудь знает, как добавить дополнительное поле (идентификатор НДС, предоставляемый Infinitepay Bundle) в регистрационную форму oroCommerce? Я не могу найти способ сделать это.

Проблема заключается в том, что это поле не является частью сущности CustomerUser, а связано с сущностью Customer. Поэтому обычная команда builder-> add () не работает. У меня также возникают проблемы с поиском способа поместить любой код в собственный пакет и заставить его работать (вместо взлома ядра). Я уже читал документы Symfony, но они не сильно помогли.

0

Решение

Во-первых, вам нужно создать расширение формы Symfony, см. документация

Затем добавьте поле идентификатора НДС в конструктор форм и добавьте прослушиватель POST_SUBMIT с более низким приоритетом, чем этот

В коде слушателя вы можете сопоставить значение идентификатора НДС с сущностью Customer.

UPD:

  1. Как именно я должен использовать расширения типа формы?

Хорошо. Использовать этот суть

Документация говорит, что они хороши для расширения типов полей, а не форм.

Это то же самое. Любой тип формы может использоваться как дочерний элемент (поле) другого типа формы.

Я не могу сделать это с помощью $ builder-> add () — это дает ошибку 500, потому что у объекта нет этого поля.

Вы должны добавить опцию ‘mapped => false’ для вашего поля. Увидеть документация

Мне также нужен способ поместить его в свой собственный пакет, а не в ядро.

Вы можете изменить любой тип формы из собственного пакета, используя расширения типа формы. Это то, для чего они были созданы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]