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

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

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

1 ответ

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

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

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

UPD:

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

Хорошо. Используйте эту суть

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

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

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

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

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

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

Другие вопросы по тегам