我使用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 }
我现在必须做什么来实现我想要的?
步骤:
- 在安全中添加安全角色。yml (http://symfony.com/doc/current/book/security.html)。
- 创建一个数组,并在表单生成器中创建复选框组合。
- 在控制器内部,在创建用户实体后使用:$userEntity->setRoles([SELECTEDROLE values IN POST VAR]);
SELECTEDROLE Values IN POST VAR ===用户在注册过程中选择的值
要在注册时分配角色,您可以向表单类添加事件订阅器或事件侦听器,并使用表单事件"formEvents::POstrongUBMIT"
详细