我有合同实体,其中包含 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
有没有办法使用反向变压器?有没有更好的方法来创建动态集合 - 可能使用集合字段类型?