2016-02-07 3 views
2

В базе данных связь между contact и contactAddress является взаимно-однозначной.Symfony Form обрабатывает один-на-один как один-на-один

Я хочу обработать форму symfony и не использовать тип коллекции, потому что он должен быть индивидуально для пользователя. появляется

$builder->add(
    'contactAddresses', 
    new ContactAddressType() 
); 

После ошибки:

Ни собственности "contactAddresses", ни один из методов "addContactAddress()"/"removeContactAddress()", "setContactAddresses()", «contactAddresses() "," __set() "или" __call() " существуют и имеют открытый доступ в классе " My \ Bundle \ ContactBundle \ Entity \ Contact ".

addContactAddress метод есть в моем контакте.

public function addContactAddress(ContactAddress $contactAddress) 
{ 
    $this->contactAddresses[] = $contactAddress; 

    return $this; 
} 

ответ

1

Попробуйте это:

$builder 
    ->add('contactAddresses','entity', array(
     'class'=>'yourBundle:ContactAddress', 
     'property'=>'propertyToDisplay' 
    )); 
+0

объекта является выбором мне нужно, чтобы сделать собственный суб formType, которые владеют полями. –

0

ли это исправить путем использования CollectionType и добавить $ contactAddress ему

Builder:

$builder->add(
    'contactAddresses', 
    'collection', [ 
     'entity' => new ContactTypeAddress() 
    ] 
); 

Контроллер:

$contact = new Contact(); 
$contact->addContactAddress(new ContactAddress()); // This line did fix my problem 

$this->createForm(new MyContactType(), $contact); 
0

Вы должны добавить его следующим образом:

$ builder->add('contactAddresses',ContactAddressType()::class);