在我的Symfony 4项目中,我有一个 ParametersAdmin 实体,该实体包含与 Entreprise 实体的 OneToOne 关系。
/**
* @ORM\OneToOne(targetEntity="App\Entity\Entreprise", mappedBy="parametresAdmin", cascade={"persist", "remove"})
*/
private $entreprise;
企业实体具有 nom 字段
在基于 ParametresAdmin 实体的表单中,我想包含 entreprise.nom 属性。
所以,我尝试了这个:
->add('entreprise', EntityType::class, [
'label' => "Nom de l'entreprise",
"class" => Entreprise::class,
"choice_label" => "nom",
"required" => false,
])
我现在有了 nom 值,但是它类似于 ChoiceType ,而不是 TextType
答案 0 :(得分:1)
编辑要编辑的实体的子实体的值非常容易。
您可能必须已经将表单的类型更改为TextType,并提供有关数据在“父”实体上的位置的信息,这可以通过{{3 }}选项:
->add('entreprise_nom', TextType::class, [
'label' => "Nom de l'entreprise",
'property_path' => 'entreprise.nom', // <--- this
'required' => false,
])
entreprise.nom
从本质上告诉表单组件它应首先访问实体上的entreprise
属性,并根据该值应访问nom
属性(您可以阅读有关此内容的更多信息在property_path
上)。如果提交了表单并且刷新了实体管理器,它还将更改(!)nom
上的entreprise
属性。