我有一个标准的FOS用户,该用户与博客实体具有ManyToOne实体关系。
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="blog")
* @ORM\JoinColumn(name="user", referencedColumnName="id")
*/
private $user;
我已经使用了app / console generate:doctrine: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(),
));
}
用户需要从表单构建器中删除才能正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句