来自实体关系的FormType添加字段

时间:2020-06-01 08:30:52

标签: php symfony

在我的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

enter image description here

1 个答案:

答案 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属性。