몇 가지 접근법이 있습니다. 하나는 사용자 엔티티에 privateAddress 및 businessAddress 메소드를 가져 오거나 설정하는 것을 추가 한 다음 콜렉션을 초기화하는 것입니다. 뭔가 같은 :
$user = new User();
$user->addAddress(new Address('Private'));
$user->addAddress(new Address('Business'));
$builder = $this->createFormBuilder($user);
$builder
->add('privateAddress', new AddressFormType())
->add('businessAddress', new AddressFormType())
;
나는 종종 여러 어린이와 함께 개체를 만들 때 두 번째 방법을 사용합니다. 이 방법에서는 배열의 여러 독립 개체를 폼에 공급 한 다음 폼을 게시 한 후에 함께 묶습니다.
$data = array(
'user' => new User(),
'privateAddress' => new Address('Private'),
'businessAddress' => new Address('Business'),
);
$builder = $this->createFormBuilder($data);
$builder
->add('user', new UserFormType())
->add('privateAddress', new AddressFormType())
->add('businessAddress', new AddressFormType())
;
...
if ($form->isValid())
// Stitch your object together then persist
두 가지 방법 모두 사용할 수 있습니다. 두 번째는 좀 더 유연하며 사용자 개체에 메서드를 추가 할 필요가 없습니다. 물론, 당신은 아마 그 방법을 어쨌든 원할 것입니다.
대단히 감사합니다. 제러드, 제 문제를 해결합니다. – smartcoderx