【问题标题】:Symfony put entity from session to formSymfony 将实体从会话放入表单
【发布时间】:2014-01-29 13:26:47
【问题描述】:

当用户在编辑操作中单击“预览”时,我有实体“页面”并将其置于会话中。在预览视图中,用户可以返回编辑,但是当我从会话中获取实体并将其合并(必须管理实体以放入表单)时,关系实体只有 ID。我想从会话中完整加载实体。

    if ($preview == 1) {
        if ($request->isMethod('POST')) {
            $em->detach($page);
            $request->getSession()->set('page', $page);
        } else {
            $page = $request->getSession()->get('page');
            echo '<pre>';
            var_dump($page);
            \Doctrine\Common\Util\Debug::dump($page, 4);
            //$page = $em->merge($page);
            //
        }
    }

这个测试显示 var_dump 打印实体中的所有字段,但 Doctrine 转储(或合并然后 var_dump)只有 ID。为什么?

【问题讨论】:

  • 看来您必须先序列化一个对象才能将其放入会话中:stackoverflow.com/questions/9384836/…
  • 这个问题虽然一旦被反序列化,它们就会与实体管理器分离。
  • @n.1 为什么要序列化?从会话加载的实体具有所有属性,但在合并后 \Doctrine\Common\Util\Debug::dump($page, 4);我丢失了除 ID 以外的所有数据
  • @Flosculus 你是什么意思?实体在从会话加载后分离,但我尝试合并它然后放入 from - 结果相同,除了 ID 之外没有任何属性
  • @psalkowski: 我为什么要序列化? 我已经看到一个对象必须可序列化才能传递给会话,但我从未测试过,我分享了链接以防万一它对您有所帮助。我不知道很抱歉。

标签: php session symfony doctrine-orm


【解决方案1】:

首先,在会话中存储预览并不是一个好主意 - 用户当然可以同时编辑多个实体。

在我看来,更好的解决方案是通过预览按钮发送表单并额外调用隐藏输入中所有字段的视图模板。然后返回按钮将再次发送表单,您将能够以最简单的方式将请求与实体绑定。

【讨论】:

  • 我没想到。我会尽快尝试
  • 好主意,但返回按钮可能会向用户显示一个确认窗口,要求重新发送数据。解决方案可能是添加一个“编辑”按钮,再次显示表单。
  • 如果您还不知道,请参阅Symfony2 documentation 了解如何使用多个按钮。
  • 我以前从来不知道这件事 :) 再次感谢!
猜你喜欢
  • 1970-01-01
  • 2015-11-01
  • 2016-03-21
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 2019-02-21
  • 2018-08-05
  • 1970-01-01
相关资源
最近更新 更多