2013-02-26 91 views
2

我有以下設置:Symfony的2 - 基於實體的關聯動態表單生成

實體結果

/** 
* @ORM\OneToMany(targetEntity="Answer", mappedBy="result", cascade={"persist", "remove"}, orphanRemoval=true) 
*/ 
private $answers; 

實體

/** 
* @ORM\ManyToOne(targetEntity="Result", inversedBy="answers", cascade={"persist"}) 
* @ORM\JoinColumn(name="result_id", referencedColumnName="id") 
*/ 
private $result; 

形式與resultType

public function buildForm(FormBuilderInterface $builder, array $options) 
{  
    $builder 
     ->add('answers', 'collection', array(
      'type' => new AnswerType(),    
     )) 
    ; 
} 

形式AnswerType: - 這就是我想要做的動態,目前已被棄用:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('value', 'choice', array(
     'choices' => Answer::getChoices(), 
     'expanded' => true, 
     'required' => true, 
    )) 
    ; 
} 

我想要做什麼:

結果的形式有AnswerType的集合 。我希望每個AnswerType都是動態的,取決於當前的答案已鏈接到。

例如,如果我有一個功能上Answer::getRandomStatus() - 如果它是真實 - AnswerType的value領域是textchoice否則。

我的猜測是在buildForm方法AnswerType,但$builder->getData() returns null,我不能區分。

回答