Symfony 2 - 基于实体关联的动态表单生成

时间:2013-02-26 10:33:51

标签: php forms symfony types doctrine-orm

我有以下设置:

实体结果

/**
 * @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()上有一个函数 - 如果它是 true - AnswerType的value字段为text,{{1}否则。

我的猜测是choice的{​​{1}}方法,但buildForm,我无法区分。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)