如何同时使用两个实体

How to use two entity at the same time

我有两个实体 calcPara calcSet.

我想用这个表格做一个表格。

我可以像这样制作每个表格

$calcPara = new CalcPara();
$form = $this->createFormBuilder($calcPara)->add('save', SubmitType::class)
    ->getForm();


$calcSet = new CalcSet();
$form = $this->createFormBuilder($calcSet)->add('save', SubmitType::class)
    ->getForm();

然而这形成了两种不同的形式。

但我想从两个实体制作一个表格。

我怎样才能做到??

在 Symfony 中,表单只有一个对象作为支持它的数据,因此您不能直接分配两个实体来扮演该角色。无需完全手动构建表单,您可以做一些准备工作,将两个实体组合成您定义的新类型,该类型包含来自两个实体的重要成员。但是,您必须负责将两个实体转换为新对象,并在提交表单时再次转换回来。

例如

class CalcSetAndPara {

    public function setSetValue($setValue) {}
    public function getSetValue() {}
    public function setParaValue($paraValue) {}
    public function getParaValue(){}
}

并使用它:

$combinedObject = new CalcSetAndPara();
$combinedObject->setSetValue($calcSet->getValue());
$combinedObject->setParaValue($calcPara->getValue());

$form = $this->createFormBuilder($combinedObject)->add('save', SubmitType::class)
    ->getForm();

//Then handle and do whatever you need to do with the results, extracting and persisting the two entities