2015-06-06 2 views
2

У меня есть два объекта в symfony: первый объект «Пользователь», который имеет атрибут $ address, который является отношением ко многим ко второй сущности с именем «UserAddresses» с полями: $ id, $ address (string). Я хочу использовать конструктор форм Symfony для создания страницы регистрации для своего сайта, и я хочу, чтобы текстовый ввод для пользователя добавлял его адрес в его учетную запись на странице регистрации. когда я использую:ввод текстового ввода symfony в форм-бланке?

$builder->add('addresses', 'entity', array(
    'class' => 'XXX\UserBundle\Entity\UserAddresses', 
    'property' => 'address', 
    'label' => 'label.address', 
    'mapped' => false, 
    'translation_domain' => 'labels')) 
; 

я вижу вход переключатель, который показывает адреса пользователей (то есть уже нуля) на странице регистрации и пользователь не может добавить свой адрес к нему. то, что я должен сделать, чтобы заменить этот входной элемент с элементом входного типа = «текст» для пользователя ввести свой адрес

ответ

0

Вы можете использовать ModelTransformer для преобразования Address в поле, прежде чем построить форму, и обратное преобразование текста значение Address объект в форме заявки

2

Для User, который может иметь много UserAddresses, используйте тип коллекции полей.

$builder->add('addresses', 'collection', array(
    'type' => new AddressType(), 
    ... 
; 

Более подробную информацию можно найти на официальном Symfony cookbook встраивать коллекцию формы и collection field type reference.

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

+1

Разница с трансформатором и типом коллекции заключается в том, что трансформатор дает вам только одно текстовое поле для адреса, а тип коллекции дает вам полную форму (думать о адресе, почтовом индексе, поле ввода города) с возможностью добавления дополнительных адреса или удалить адрес –

+0

@Frankbeen спасибо за дополнение. Я добавляю это к ответу. – ihsan

Смежные вопросы