[英]Symfony2 - Using logged user in a form generated with CRUD
我正在Symfony2中开发一个博客。 我在学说中有两个实体:
我通过以下方式生成商品实体的CRUD:
php app/console doctrine:generate:crud
我在控制器文件中得到以下updateAction:
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('BlogBundle:Staticpage')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Staticpage entity.');
}
$deleteForm = $this->createDeleteForm($id);
$editForm = $this->createForm(new EditStaticPageType(), $entity);
$editForm->bind($request);
if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('static_edit', array('id' => $id)));
}
return $this->render('BlogBundle:StaticsManagement:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
));
}
当我打开表单以创建新文章或编辑现有文章时,将显示一个包含我的User实体的用户的框,因此我可以选择其中一个,因为这两个表都在Entity中链接了ManyToOne批注。 但是,我不想选择任何用户。 我想在Articles表中输入已经登录的用户名(实际上是ID,因为它们都是链接的),并删除可用用户的列表。
我已经设置了安全性环境并且可以正常工作,因此只有在用户登录后才会始终执行此代码。我想我必须编辑updateAction方法,但我不知道如何。
首先,如果您仍在学习Symfony,我建议不要使用任何CRUD生成器。 比起使用某种辅助工具,第一次手动做事更好。 无论如何,如果我理解您的问题,则应将当前登录的用户设置为文章用户:
// Get logged user and set it as article user
$loggedUser = $this->get('security.context')->getToken()->getUser();
$entity->setUser($loggedUser);
// Create edit form
$editForm = $this->createForm(new EditStaticPageType(), $entity);
// Bind the request if POST
if('POST' === $request->getMethod()) {
$editForm->bind($request);
}
// GET or invalid POST form
if('GET' === $request->getMethod() || !$editForm->isValid()) {
return $this->render('BlogBundle:StaticsManagement:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
));
}
// POST with valid form so persist
$em->persist($entity);
$em->flush();
然后从文章编辑表单中删除user
字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.