用户可以评论不同的项目(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 }
嫩枝:
{{ render(controller('DbeDDDDBundle:Comment:new', { 'id': entity.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.
答案 0 :(得分:1)
您还有当前用户的快捷方式:$this->getUser()
至于项目。你桅杆以某种方式传递它。我想到了两种方式。
一般来说,我会选择#2,因为它遵循Restful约定。制作create_comment
路径:projects/{projectId}/comments
POST。
这样你就可以在你的行动中使用$ projectId参数。