Symfony Тип формы - добавить опции - PullRequest
0 голосов
/ 05 марта 2020

В моем проекте у меня 3 объекта; User, Module и UserModule.

У пользователя есть такие свойства, как id, имя пользователя, электронная почта, а также свойство UserModules, которое является коллекцией UserModules.

Модуль имеет свойства id, имя и описание.

Каждый объект 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,
                ]
            ]);
    }

. Здесь показаны пользовательские модули, назначенные пользователю, но при создании пользователя я хочу его чтобы уже были добавлены пользовательские модули для каждого модуля.

Как настроить это так, чтобы форма использовала все возможные модули для создания пользовательских модулей по умолчанию?

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

В этом случае, поскольку вы используете только true и false для определения, имеет ли пользователь доступ к модулю, я бы использовал EntityType с атрибутом multiple вместо CollectionType.

Таким образом, вы только указываете, какие модули имеют доступ.

Ссылка на документацию

0 голосов
/ 05 марта 2020

Я надеюсь, вы найдете здесь некоторую помощь: https://symfony.com/doc/current/form/form_collections.html

в примере: используйте теги в качестве модулей

...