sonata_type_collection 在预提交时被清除

sonata_type_collection is cleared on preSubmit

与此问题相关:https://github.com/sonata-project/SonataCoreBundle/issues/408,我有一个自定义的意外行为 sonata_type_collection。

该集合用作 EAV 模型,通过标准 sonata_type_collection 构建动态表单。

当提交有错误的表单时(例如,必填字段为空),重新呈现的表单失去了它的结构。该集合内置于PRE_SET_DATA 表单事件中,但是在提交时,preSubmit 事件«销毁»集合内置于PRE_SET_DATA.

我的问题,有没有办法避免在提交时清算集合?

附加到您的表单字段的 ResizeFormListener 可能导致此行为,因为它会在您提交表单时从 collection 中删除空行。

将 collection 字段添加到 FormMapper 时应添加 modifiable => false 选项。

使用此选项将不会附加 ResizeFormListener,因此提交时不会删除空 collection 元素。