2013-07-08 1 views
0

소나타 사용자 번들 및 FOS 사용자 번들 덕분에 사용자 관리를 구성했습니다. 권한이있는 그룹을 만들었고 사용자를 그룹에 포함 시켰습니다. 그러나 이러한 사용자 프로필에 로그인 할 때 그룹에 영향을주는 역할이 없습니다.symfony Fos User Bundle : fos_user_group 및 역할 링크

누구에게 설명이 있습니까?

+1

제공하는 사용자 관리자를 사용할 수 있습니다

addRole

에서 배열 사용되는 유형입니다? 아마도 :) – 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)}} 또는 렌더를 완전히 제어하려는 경우 필드별로 필드를 작성할 수 있습니다.

사용자 클래스의 역할 속성 때문에 변환 또는 당신이 몇 가지 코드없이 fosuserbundle