在 Zend Framework 2 应用程序的表单集合中使用 dgrid
2022-08-30 17:55:12
对于我们的新项目,我们已经开始使用Zend Framework 2和Dojo 1.8。ZF2 有一个完全重写的表单模块,该模块现在具有用于一对多关系的新 CollectionElement。关于我发现的UI,dgrid最适合这样的关系(使用编辑器列插件),所以我开始扩展FormCollection,FormRow和FormElement视图帮助程序,以便它们可以呈现所需的dgrid。一切都很好,直到我意识到,我无法为dgrid小部件设置每行输入名称。
我从 ZF2 文档培育表单集合开始。可以看到,集合输入元素具有类似数组的名称,例如
order[products][0][name]
order[products][0][price]
order[products][1][name]
order[products][1][price]
另一方面,dgrid的配置是基于列的,所以我可以有一个列定义,如
editor({
field: "_dojo_textbox_505ee3a390d705_26717315",
label: "Name",
editorArgs: {
name: "order[products][{index}][name]",
}
}, TextBox)
此列定义将定义为所有行设置相同的小组件名称,这不符合 ZF2 集合数据格式要求。
我还尝试了这样命名列:
order[products][]
它有效,但不允许所需的格式
order[products][][name]
也许有一种方法可以像这样发布数据:
order[products][name][]
并在之后对其进行转换,但解决方案看起来不对。除此之外,我正在尝试生成可重用的代码,并希望避免每个表单的数据修改。
由于我非常努力地避免对数据转换进行 onSubmit/onClick 事件处理,因此有 2 种可能的解决方案:1. 使 dgrid 能够设置每行小部件名称 2.使 ZF2 表单理解集合的一些非标准 POST 格式
不幸的是,我用尽了想法,如何做到这两个解决方案,所以我将非常感激,如果你能给我一个帮助!
由于这与我当前的问题有些关系,因此我将它作为附带问题放在这里:除了这个UI解决方案之外,您还使用什么来使用dojo的一对多表单界面?