如何在 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-&gt;merge($profile) 而不是$em-&gt;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 请求?

最佳实践如何安排 symfony2 操作 [关闭]

Symfony2:如何获取标记有“编辑”ACL 权限的一种类型的所有实体?

如何在 symfony2 控制器中发送 JSON 响应

如何在 symfony2 中创建 slugify?

如何解决在 aws 上打开 symfony2 安装时出现 403 Forbidden 错误?