【问题标题】:Symfony2 How to set data on a submitted form?Symfony2 如何在提交的表单上设置数据?
【发布时间】:2015-08-23 15:35:11
【问题描述】:

我的一个表单遇到了一个棘手的问题。

底层对象(实体)非常简单:Work ManyToOne Artist。

在 WorkType 表单上工作时,我的 UI 使字段 artist 无用,因为我在使用填充对象 $work 构建表单之前总是这样做 $work->setArtist($artist)。一切都好。因此,我在此表单中没有 artist 字段。我的表单包含一些依赖于基础artist 值的字段,因此我必须在提交表单之前(而不是之后)设置艺术家。

现在我正在制作一个嵌入 WorkType 的 MasterType 表单。这次我不能在构建表单之前设置艺术家,作为MasterType提交数据的艺术家结果。

我的问题是:如何将艺术家设置为嵌入式 WorkType 的基础对象?

必须在提交MasterType之后,因为艺术家依赖于提交的数据,但在提交WorkType之前,因为WorkType表单包含依赖于艺术家的字段。

到目前为止,我已经尝试破解几个事件但没有成功。使用 MasterType 上的 SUBMIT 事件,我无法在嵌入式 WorkType 上设置数据,而不会遇到“您无法在提交的表单上设置数据”。

非常感谢您提供任何见解!

【问题讨论】:

标签: symfony symfony-forms


【解决方案1】:

WorkType 上的 FormEvents::PRE_SUBMIT 怎么样?

【讨论】:

  • pre_submit 只允许我处理表单字段,我不能操作底层对象,因此不能做$underlyingObject->setArtist($artist)。一种方法是添加这个artist 字段,但这似乎是一个黑客......
  • 那么简单的方法:将艺术家字段添加为隐藏在工作类型中。
猜你喜欢
  • 2023-04-10
  • 2012-01-01
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 2012-10-18
  • 2016-05-30
相关资源
最近更新 更多