0
由於Sonata User Bundle和FOS User Bundle,我配置了用戶管理。我讓一些組擁有權限,並且將用戶放入其中。但是,當我登錄這些用戶配置文件時,我沒有影響到組的角色。Symfony Fos用戶包:鏈接fos_user_group和角色
有人對此有解釋嗎?
由於Sonata User Bundle和FOS User Bundle,我配置了用戶管理。我讓一些組擁有權限,並且將用戶放入其中。但是,當我登錄這些用戶配置文件時,我沒有影響到組的角色。Symfony Fos用戶包:鏈接fos_user_group和角色
有人對此有解釋嗎?
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
提供的用戶管理器?可能不會 :) – nifr