Symfony2将当前用户添加到表单输入数据

Symfony2将当前用户添加到表单输入数据,symfony,doctrine-orm,symfony-forms,fosuserbundle,Symfony,Doctrine Orm,Symfony Forms,Fosuserbundle,我有一个标准的FOS用户,他和一个博客实体有多个实体关系 /** * @ORM\ManyToOne(targetEntity="User", inversedBy="blog") * @ORM\JoinColumn(name="user", referencedColumnName="id") */ private $user; 我已经使用app/console generate:doctor:crud命令生成了一个基本的crud系统 创建新博客实体时,我希望插入执行该操作的登录用户。默

我有一个标准的FOS用户,他和一个博客实体有多个实体关系

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="blog")
 * @ORM\JoinColumn(name="user", referencedColumnName="id")
 */
private $user;
我已经使用app/console generate:doctor:crud命令生成了一个基本的crud系统

创建新博客实体时,我希望插入执行该操作的登录用户。默认情况下,Symfony生成CRUD代码,允许用户选择连接到实体的用户

    $builder
        ->add('name')
        ->add('address')
        ->add('facebook')
        ->add('twitter')
        ->add('user')
    ;
在控制器中,我可以使用security.context访问登录用户:

$user = $this->get('security.context')->getToken()->getUser();

改变这一状况的最佳措施是什么?

好的!解决了我自己的问题如果我做错了,请随时纠正我,我会接受更好的答案。不过,这一款看起来确实很管用

执行$form->isValid检查后,可以将用户添加到控制器中。这里是我的控制器函数的例子

public function createAction(Request $request)
{
    $entity  = new Blog();
    $form = $this->createForm(new BlogType(), $entity);
    $form->bind($request);

    if ($form->isValid()) {
        $entity->setUser($this->get('security.context')->getToken()->getUser());
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();
        return $this->redirect($this->generateUrl('blog_show', array('id' => $entity->getId())));
    }

    return $this->render('ExampleBundle:Blog:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
    ));
}

需要将用户从表单生成器中删除,才能使其正常工作

好的!解决了我自己的问题如果我做错了,请随时纠正我,我会接受更好的答案。不过,这一款看起来确实很管用

执行$form->isValid检查后,可以将用户添加到控制器中。这里是我的控制器函数的例子

public function createAction(Request $request)
{
    $entity  = new Blog();
    $form = $this->createForm(new BlogType(), $entity);
    $form->bind($request);

    if ($form->isValid()) {
        $entity->setUser($this->get('security.context')->getToken()->getUser());
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();
        return $this->redirect($this->generateUrl('blog_show', array('id' => $entity->getId())));
    }

    return $this->render('ExampleBundle:Blog:new.html.twig', array(
        'entity' => $entity,
        'form'   => $form->createView(),
    ));
}
需要将用户从表单生成器中删除,才能使其正常工作