Symfony2使用动态表单生成和事件对Collection进行反向DataTransformer

时间:2014-12-17 16:11:09

标签: symfony symfony-forms

我有合同实体,其中包含 TimekeepingEntries 的集合。 通常我会创建一个映射到合同的表单,并为 TimekeepingEntries 添加集合

不幸的是,表单必须非常自定义 - 按用户分组并使用名为的动态变量修改为在循环内创建的工作日表。

这是预期的HTML结果: https://gist.github.com/webdevilopers/42c3cdc6013fb09f1c58#file-batch-html

即使数据库中没有数据,我的表单也必须为每一天和每个用户创建一个collectionType timekeepingEntry

这可以通过使用 PRE_SET_DATA 事件并动态添加"子表单"来实现。 我没有找到一种不同的方式来动态添加集合,这就是我必须使用多个 createNamed 方法的原因: https://gist.github.com/webdevilopers/42c3cdc6013fb09f1c58#file-timekeepingentrybatchtype-php

到目前为止,表单在生成并正确填充时仍然有效。

但提交后我收到以下错误: 捕获致命错误:参数1传递给Plusquam \ Bundle \ ContractBundle \ Entity \ Contract :: addTimekeepingEntry()必须是Plusquam \ Bundle \ ContractBundle \ Entity \ TimekeepingEntry的一个实例,给定数组

这是正确的,因为我必须反转我的自定义数组表示法动态生成的"子表格"返回集合实体 TimekeepingEntry

不幸的是,没有调用 reverseTransform 方法: https://gist.github.com/webdevilopers/42c3cdc6013fb09f1c58#file-timekeepingtransformer-php

但这似乎是一种预期的行为,因为@webmozart又名@ bernhard-schussek说: https://github.com/symfony/symfony/issues/7807

有没有办法使用反向变压器?有没有更好的方法来创建动态集合 - 可能使用集合字段类型?

0 个答案:

没有答案