【问题标题】:Saving data failed on Symfony2 with persist method使用持久方法在 Symfony2 上保存数据失败
【发布时间】:2014-08-31 04:21:42
【问题描述】:

我在保存冲突实体的数据时遇到问题,每次调用方法时都失败。

$em->persist($conflict);

返回一个空白屏幕并显示一个字符串'persist'。我不知道如何解决它,因为我是 symfony2 的新手。

这是我创建冲突控制器的示例代码。

public function createAction() {
    $conflict = new Conflict();
    $form = $this->createForm(new ConflictType(), $conflict, array(
        "container" => $this->container,
        "em" => $this->getDoctrine()->getEntityManager()
    ));

    $request = $this->getRequest();
    $form->bindRequest($request);
    if ($form->isValid()) {
        $conflict->setAwardDeadlineCurrent($conflict->getAwardDeadlineInit());
        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($conflict);
        $em->flush();
        $request->getSession()->setFlash("notice", "Case has been created");
        return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("id" => $conflict->getId())));
    }
    return $this->render("ACFCaseBundle:Conflict:new.html.twig", array("form" => $form->createView()));
}

【问题讨论】:

  • 您有任何事件监听器/事件订阅者吗?这个实体“冲突”是否有任何方法“PostUpdate”“PrePersist”等?如果这是你写的唯一代码,看起来没问题(可能是“conflictType”形式的一些奇怪的东西)所以它一定是关于我们的 symfony2 安装
  • 同意@Francesc ... 听起来像 die();测试是否到达了代码的某些部分

标签: php orm doctrine-orm symfony-2.1


【解决方案1】:

可能很少有人担心:

如果你使用最新版本的 symfony i。 e. (Symfony2.2 或更高版本)然后:

$form->bindRequest($request);

应该是:

$form->handleRequest($request);

并且还返回渲染线

 return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("id" => $conflict->getId())));

您只渲染您的 id,而您应该传递一个对象来渲染 object 的所有字段。 可能是这样的:

return $this->redirect($this->generateUrl("acf_case_conflict_edit", array("conflict" => $conflict)));

我也不明白必须通过

  array(
    "container" => $this->container,
    "em" => $this->getDoctrine()->getEntityManager()
)

在你的表单创建中像

   $form = $this->createForm(new ConflictType(), $conflict, array(
    "container" => $this->container,
    "em" => $this->getDoctrine()->getEntityManager()
   ));

可能是这样的

   $form = $this->createForm(new ConflictType(), $conflict);

【讨论】:

  • 谢谢,我会检查您的建议并通知您
猜你喜欢
  • 2015-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2021-06-24
  • 2015-10-07
  • 1970-01-01
相关资源
最近更新 更多