如何在fosuserbundle用户注册中分配角色(使用复选框)


How to assign roles (using check boxes) in fosuserbundle User Registration?

我使用fosuserbundle进行注册和登录(身份验证)。我想在注册时分配角色(使用复选框)。

这三个将以复选框ROLE_ADMIN, ROLE_USER, ROLE_SUPPER_ADMIN的形式。

我创建了一个扩展了baseUser的User实体。我有RegisterType扩展BaseType

我想使用fosuserbundle的角色值,我如何链接fosuserbundle的角色与checkbox?

我的安全。下面给出了Yml

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
    fos_userbundle:
        id: fos_user.user_provider.username
firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: security.csrf.token_manager 

        logout:      
         path:   /logout
         target:  /login
        anonymous:    true
access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: ROLE_USER }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/Services/, role: ROLE_USER }

我现在必须做什么来实现我想要的?

步骤:

  1. 在安全中添加安全角色。yml (http://symfony.com/doc/current/book/security.html)。
  2. 创建一个数组,并在表单生成器中创建复选框组合。
  3. 在控制器内部,在创建用户实体后使用:$userEntity->setRoles([SELECTEDROLE values IN POST VAR]);

SELECTEDROLE Values IN POST VAR ===用户在注册过程中选择的值

要在注册时分配角色,您可以向表单类添加事件订阅器或事件侦听器,并使用表单事件"formEvents::POstrongUBMIT"

详细