将EntityType选择另存为字符串-Symfony 4

时间:2018-07-20 13:53:26

标签: php symfony symfony4

我有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新手:)

1 个答案:

答案 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();
    }
}