我有entity1和entity2。
在entity1的表单中,我显示了一个选择列表,其中的选项来自entity2。 我想将选择的选项另存为字符串,作为entity1的表中一列的内容,但是我不想在表之间创建任何关系。
我应该怎么做?
class Entity1 {
/**
* @ORM\Column(type="string")
*/
private $historico;
}
class Entity2 {
/**
* @ORM\Column(type="string")
*/
private $description;
}
Entity1FormType.php
$builder->add('historico', EntityType::class, [
'class' => Entity2::class,
'choice_label' => 'description',
'choice_value' => 'description',
'placeholder' => ''
]);
选项显示正常,但是当我提交时出现以下错误:
Expected argument of type "string", "App\Entity\Entity2" given.
如果我使用'mapped'=> false,则输入提交为null。
如何将实体对象转换为字符串? 帮助一个symfony新手:)
答案 0 :(得分:0)
如果您使用mapping => false,则必须在提交表单后在控制器中手动获取数据。
所以您将得到这样的东西:
public function postYourFormAction(Request $request)
{
$entity1 = new Entity1();
$form = $this->createForm(Entity1Type::class $entity1);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()) {
$entity1 = $form->getData;
$historico = $form->get('historico')->getData();
$entity1->setHistorico($historico);
$em->persist($entity1);
$em->flush();
}
}