如何在 symfony2 中进行编辑功能
Posted
技术标签:
【中文标题】如何在 symfony2 中进行编辑功能【英文标题】:How to do edit function in symfony2 【发布时间】:2014-02-18 05:14:00 【问题描述】:我在 symfony2 中编写了一个用于编辑的函数,我的问题是我可以从数据库中获取以前的值,但是在提交表单后,这些值没有被创建,而是正在创建一个新表单
这里是控制器
public function editAction($id)
$request = $this->getRequest();
$em = $this->getDoctrine()->getEntityManager();
$profile= $em->getRepository('TcprofileBundle:TcProfiles')
->find($id);
$profile_form = $this->createForm(new ProfileType(), $profile);
$response = new JsonResponse();
$response->setData(array('content' => $this->renderView('TcprofileBundle:Default:create.html.twig',array('form' => $profile_form->createView()))));
return $response;
Html.twig 文件
<div class="edit01"><a href="#! path('tcprofile_edit', 'id': profile.getId) "> Edit Profile </a></div>
我正在获取旧值,所以我将 if 循环用于条件检查,如下所示
控制器
public function editAction($id)
$request = $this->getRequest();
$em = $this->getDoctrine()->getEntityManager();
$profile= $em->getRepository('TcprofileBundle:TcProfiles')
->find($id);
if(!$id)
$profile_form = $this->createForm(new ProfileType(), $profile);
$response = new JsonResponse();
$response->setData(array('content' => $this->renderView('TcprofileBundle:Default:create.html.twig',array('form' => $profile_form->createView()))));
return $response;
else
$profile->upload();
$em->persist($profile);
$em->flush();
$response = new JsonResponse();
$response->setData(array('content' => $this->renderView('TcprofileBundle:Default:create.html.twig',array('form' => $profile_form->createView()))));
return $response;
如果我在某个地方出错了,请帮助我
【问题讨论】:
【参考方案1】:更新实体时,您可以使用$em->merge($profile)
而不是$em->persist($profile)
。请this stack overflow发帖
【讨论】:
如果我使用合并,我会收到异常,因为在链配置的命名空间 Tc\PlayerBundle\Entity、Tc\profileBundle\Entity 中找不到类“Symfony\Component\Form\Form”, Tc\StatusBundle\Entity, Tc\PhotoBundle\Entity, FOS\UserBundle\Entity, Tc\UserBundle\Entity 只需删除persist() 或merge() 并再次尝试它会起作用。以上是关于如何在 symfony2 中进行编辑功能的主要内容,如果未能解决你的问题,请参考以下文章
如何在 symfony2 功能测试中发出 https 请求?