如何通过嵌入表单存储中间实体

时间:2017-10-23 19:11:46

标签: symfony symfony-forms

我希望用户填写单个表单,然后创建并存储多个Doctrine实体 - Company实体和相关的User实体。

我已阅读有关嵌入表单的说明以及如何将“子表单”嵌入到相关实体的主表单中。

但是,我的两个实体通过中间实体Team Membership相关联 - 一个在连接表companies_users之上构建的实体。这个实体是必要的,因为我跟踪了一些关于每个关系的额外数据。

我没有找到任何关于此的文档。在这种情况下使用embedded表单是否可行或甚至可行?是否有某种方法可以定义目标相关实体(User)的嵌入表单是否也应该创建中间实体?

我希望我的表单有一个数据类,因为我喜欢Validator注释并直接在表单类上设置验证规则似乎不够健壮,而且看起来非常不优雅。

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您可以创建中间实体的表单,即使它不包含任何字段。我实际上在我的一些项目中使用它,如下所示:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('team_membership', TeammembershipType::class, [
                'label' => false
            ]);
    }

然后在TeammembershipType:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('user', UserType::class, [
                'label' => false
            ]);
    }

您还可以在中间形式的活动中设置团队成员资格数据。