Symfony2条令表单-如何在另一个类中获取项目对象?

Symfony2条令表单-如何在另一个类中获取项目对象?,symfony,doctrine-orm,one-to-many,Symfony,Doctrine Orm,One To Many,用户可以对不同的项目发表评论(OneToMany关系项目->评论)。如果创建了一条评论,我需要知道是哪个用户做的,是为哪个项目做的。我已经知道如何获取当前用户,但我不知道如何获取项目对象 这是createAction控制器,我现在的问题是,如何访问正在显示的当前项目 /** * Creates a new Comment entity. * */ public function createAction(Request $request) { $e

用户可以对不同的项目发表评论(OneToMany关系项目->评论)。如果创建了一条评论,我需要知道是哪个用户做的,是为哪个项目做的。我已经知道如何获取当前用户,但我不知道如何获取项目对象

这是createAction控制器,我现在的问题是,如何访问正在显示的当前项目

 /**
 * Creates a new Comment entity.
 *
     */
    public function createAction(Request $request)
    {
        $entity = new Comment();


        $form = $this->createCreateForm($entity);
        $form->handleRequest($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('dbe_comment_show', array('id' => $entity->getId())));
        }

        return $this->render('DbeDonaciBundle:Comment:new.html.twig', array(
            'entity' => $entity,
            'form'   => $form->createView(),
        ));
    }
提前谢谢

我所做的改变:

dbe_comment_create:
pattern:  /project/{id}/comment
defaults: { _controller: "DbeDDDDBundle:Comment:create" }
requirements: { _method: post }
细枝:

这是我得到的错误消息,因为我正在呈现新方法,而不是创建

An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("id") to generate a URL for route "dbe_comment_create".") in DbeDDDDDBundle:Project:show.html.twig at line 305.

您还有当前用户的快捷方式:
$this->getUser()

至于这个项目。你应该设法通过它。我想到了两种方法

  • 将包含项目id的隐藏字段添加到表单中
  • 将项目id放在路由中(因此也作为操作参数)
  • 通常我会选择#2,因为它遵循Restful约定。让你的
    create_comment
    path:
    projects/{projectId}/comments
    POST


    这样,您的操作中就可以使用$projectd参数。

    嘿,伊戈尔,已经感谢您将我发送到正确的方向。我仍然有一些问题,因为我正在渲染新方法。我如何才能做到这一点,以及之后如何将对象id放入控制器?
    An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("id") to generate a URL for route "dbe_comment_create".") in DbeDDDDDBundle:Project:show.html.twig at line 305.