php-symfony3在一个形式构建器中添加一个形式构建器



我正在为实体(示例(创建一个包含其他实体数量数量的形式( 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);

结果与形式直接同步。

相关内容

  • 没有找到相关文章

最新更新