我正在为实体(示例(创建一个包含其他实体数量数量的形式( Result
(。
样本的集合Result
。(以及Parameter
的集合(
在我的控制器中,代码看起来像
$em = $this->getDoctrine()->getManager();
$sample = $em->getRepository('ReceptionBundle:Sample')->find($id);
$formBuilder = $this->createFormBuilder();
$i = 0;
foreach ($sample->getParameter() as $param){
$fb = $this->get('form.factory')->createNamedBuilder($i, FormType::Class, $sample);
if ($param->getCriteria()===false){
$fb->add('result', Result1Type::class, array('data_class'=>null));
}
else {
$fb->add('result', Result2Type::class, array('data_class'=>null));
}
$formBuilder->add($fb);
$i++;
}
$formBuilder->add('save', SubmitType::class);
$form = $formBuilder->getForm();
当我尝试此操作时,我之前有一个错误查看表格:
表单的视图数据有望是类接收bundle Entity result的实例,但是类教义 orm persistentCollection的一个实例。您可以通过将" data_class"选项设置为null或添加一个视图变压器来避免此错误
所以,当我尝试将" data_class"选项设置为null时,我可以显示表单,但我不能提交:
类型的"学说 common collections collections collection | array"的期望值" for cosiscot for cosiscote" fockionbundle entity entity sample#$ result'',获得"布尔值"。
我不知道为什么要收到布尔值。
finaly,我没有,t使用result1type :: class,这不是必需的。我使用集合类型,问题是您可以在控制器中直接创建新结果
foreach ($sample->getParameter() as $param){
$result = new Result();
$sample->addResult($result);
}
$form = $this->createForm(AnalyseType::class, $sample);
结果与形式直接同步。