感谢 Sonata User Bundle 和 FOS User Bundle,我配置了用户管理。我创建了一些具有权限的组,并将用户放入其中。但是当我登录这些用户配置文件时,我没有影响到组的角色。
有人对此有解释吗?
感谢 Sonata User Bundle 和 FOS User Bundle,我配置了用户管理。我创建了一些具有权限的组,并将用户放入其中。但是当我登录这些用户配置文件时,我没有影响到组的角色。
有人对此有解释吗?
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) }} 或者如果您想完全控制渲染,您可以逐个字段地编写它。
User 类中的角色属性是一个数组,因此在 addRole 中使用了类型转换
或者,您可以使用 fosuserbundle 提供的用户管理器