0

在我的项目中,我有 3 个实体;用户、模块和用户模块。

用户具有诸如 id、用户名、电子邮件之类的属性以及作为 UserModules 集合的 UserModules 属性。

模块具有属性 id、name 和 description。

每个 UserModule 对象都有属性 User(对相应用户的引用)、Module(对相应模块的引用)和 Access(是否允许访问的布尔值)

我的问题是我不知道如何在创建用户时使用 Symfony 的表单类型来显示所有模块。我已经制作了许多模块(即'admin'、'ticket'、'help')。在我的 UserType 类中,我的 buildForm 方法如下所示:

    {
        $builder
            ->add('username')
            ->add('email')
            ->add('modules', CollectionType::class, [
                'entry_type' => UserModuleType::class,
                'entry_options' => [
                    'label' => false
                ],
            ]);
    } 

我的 UserModuleType 类是

    {
        $builder
            ->add('access', ChoiceType::class, [
                'choices' => [
                    'No Access' => false,
                    'Full Access' => true,
                ]
            ]);
    }

这显示了分配给用户的 UserModules,但是在创建用户时,我希望它已经为每个模块添加了 UserModules。

如何进行设置,以便表单使用所有可能的模块来创建默认的 UserModules?

4

2 回答 2

0

我希望你能在这里找到一些帮助: https ://symfony.com/doc/current/form/form_collections.html

在示例中:使用标签作为您的模块

于 2020-03-05T16:13:24.353 回答
0

在这种情况下,由于您仅使用 true 和 false 来定义用户是否有权访问模块,因此我将使用EntityTypewithmultiple属性而不是CollectionType.

这样你只设置哪些模块可以访问。

链接到文档

于 2020-03-05T16:28:26.583 回答