2013-07-08 88 views
0

由於Sonata User Bundle和FOS User Bundle,我配置了用戶管理。我讓一些組擁有權限,並且將用戶放入其中。但是,當我登錄這些用戶配置文件時,我沒有影響到組的角色。Symfony Fos用戶包:鏈接fos_user_group和角色

有人對此有解釋嗎?

+1

提供的用戶管理器?可能不會 :) – nifr

回答

0

FOS對addRole和setRoles中使用序列化和非序列化數組的角色使用兩個函數。您可以通過使用用戶管理器API或學說實體管理器做到這一點,那就是通過在控制器創建行動如下:

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)}},或者你可以逐字段輸出。

在用戶類的角色屬性的陣列因此類型轉換中addRole

使用可替代地可以使用在沒有一些代碼由fosuserbundle