【发布时间】:2023-03-10 04:23:02
【问题描述】:
我有以下设置:
实体结果:
/**
* @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(),
))
;
}
Form AnswerType:- 我想要动态化的这个,目前已弃用:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('value', 'choice', array(
'choices' => Answer::getChoices(),
'expanded' => true,
'required' => true,
))
;
}
我想做什么:
结果表单有一个 AnswerType 的集合。我希望每个 AnswerType 都是动态的,具体取决于当前的 Answer 链接到。
例如,如果我在 Answer::getRandomStatus() 上有一个函数 - 如果它是 true - AnswerType 的 value 字段为 text,否则为 choice。
我的猜测是在AnswerType的buildForm方法中,但是$builder->getData() returns null,我无法区分。
【问题讨论】:
标签: php forms symfony types doctrine-orm