2012-11-06 2 views
2

나는 특정 데이터를 만들기 위해 서로 의존하는 Doctrine 엔티티 집합을 가지고 있는데, 두 엔티티의 데이터를 사용하는 양식을 만들어야합니다.Symfony2 buildForm()의 속성 연결하기

나는 Magazine 엔터티, Issue 엔터티 및 Chapter 엔터티를 보유하고 있습니다. The Magazine (Mag1, Mag2)에는 하나의 Magazine에만 속한 이름 인 Issue라는 이름이 있으며 '숫자'(Mag1-> Issue1, Mag1-> Issue2, Mag3-> Issue1, Mag2-> Issue ' 여름'). 이 장에서는 하나 개의 문제에 속하는해야하지만, 양식을 만들 때, 나는 두 개의 엔티티에서 속성을 연결하는 데 필요한 문제 선택기 구축 :

class ChapterType extends AbstractType 
{ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name') 
     ->add('number') 
     ->add('issue', 'entity', array(
       'class' => 'Bundle:Issue', 
       'property' => 'magazine.name' 
     )) 
    ; 
} 
... 

내가이 '속성'에 연결하여 할 일은해야 할 일을 'magazine.name'+'number'처럼 ('number'은 추가 번호 문제가됩니다.) PHP 문자열 에서처럼 .과 연결하려고하면 문자열이 아니기 때문에 작동하지 않습니다. 그래서 내가 할 일이 무엇인지 또는 가능한지 모르겠습니다.

답변

7

문제점 : Concat를 수행하는 새 getter를 작성하십시오. ManyToOne 관계를 올바르게 설정 했으므로 getter가 뭔가 있어야합니다. E :

$builder 
    ->add('name') 
    ->add('number') 
    ->add('issue', 'entity', array(
      'class' => 'Bundle:Issue', 
      'property' => 'magazineAndIssue' 
    )) 
+0

보다 표준 솔루션) 대신 getMagazzineAndIssue (의 메소드를 toString을 (발급 포함 것)하고 속성을 제거하기 :

public function getMagazzineAndIssue() { return $this->magazine->getName() . $this->number; } 

형태는 재산이 새로운 방법을 사용 매개 변수. 속성 매개 변수의 기본값은 toString() 메서드를 사용하지 않습니다. –

+0

고마워, 드디어 잡았어 ...! –