使用当前用户ID - symfony 2

时间:2014-11-14 16:53:32

标签: symfony doctrine-orm fosuserbundle fr3dldapbundle

我使用FOS用户软件包和LdapBundle为我的用户连接到网站。 我创建了一个表单,我想跟踪谁添加了一个条目。所以我想将添加/修改该内容的用户保存到数据库中。

最好的方法是什么?由于它将成为一个表单,我的第一个想法是使用当前用户ID在我的FormType上创建一个隐藏字段,但我认为这是安全的。

任何建议都将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议反对隐藏的字段,因为它可以很容易地操纵。

更好的方法是将SecurityContext注入到表单中,并通过POST_SUBMIT事件将登录用户绑定到该对象。

答案 1 :(得分:1)

我不知道ldapBundle但是当我想保存例如我在控制器中拍摄的照片时

    $user=$this->security_context->getToken()->getUser();

    $form = $this->createForm(new PhotoType(), $photo )
    $request = $this->get('request');

    if ($request->getMethod() == 'POST') {

                $form->handleRequest($request);

                if ($form->isValid()) {

                   $photo->setUser($user);

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

            ....


它是一个基本代码,您还必须检查用户是否存在执行持久性:if($user) ...