Symfony Fos用户包:链接fos_user_group和角色

时间:2013-07-08 15:37:02

标签: symfony usergroups

由于Sonata用户捆绑包和FOS用户捆绑包,我配置了用户管理。我创建了一些具有权限的组,我将用户放入其中。但是当我登录这些用户配置文件时,我没有受到组影响的角色。

有人对此有解释吗?

1 个答案:

答案 0 :(得分:0)

FOS对使用addRole和setRoles中的序列化和反序列化数组的角色使用两个函数。您可以使用用户管理器api或doctrine实体管理器来完成,也就是在控制器中创建操作,如下所示:

public function registerUserAction(Request $request)
{
     $task = new User();


    $form = $this->createFormBuilder($task)
        ->add('username', 'text')
        ->add('email', 'email')
        ->add('enabled', 'choice', array(
              'choices'   => array('Enable' => 1, 'Disable' => 0),
              'required'  => true,

          ))   
        ->add('password', 'password')
        ->add('roles')     
        ->add('save', 'submit')
        ->getForm();
    $form->handleRequest($request);

    if($form->isValid()){
   $username = $form->get('username')->getData();
   $email = $form->get('email')->getData();
   $pass = $form->get('password')->getData();
   $enabled = $form->get('enabled')->getData();
   $roles = $form->get('roles')->getData();



   $task->setUsername($username);
   $task->setEmail($email);
   $task->setPlainPassword($pass);

   $task->setRoles($roles);
   $task->setEnabled($enabled);

   $em = $this->getDoctrine()->getManager();
   $em->persist($user);
   $em->flush();

    }
    return $this->render('SafUserBundle:ManageUser:registerUser.html.twig', array(
        'form' => $form->createView(),
    ));


}

确保在控制器顶部为http请求启用库,如下所示:

使用Symfony \ Component \ HttpFoundation \ Request;

以上将使用表单粘贴模板和控制器。

在树枝中,您可以一次性输出表格{{form(form)}},或者如果您想要完全控制渲染,可以逐字段编写。

User类中的roles属性是一个数组,因此在addRole中使用了类型转换

或者您可以使用fosuserbundle提供的用户管理器