对于我们的新项目,我们已经开始使用 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 事件处理,因此有两种可能的解决方案: 1. 使 dgrid 能够设置每行小部件名称 2. 使 ZF2 表单理解一些非标准的 POST 格式收藏品
不幸的是,我没有想法,如何完成这两种解决方案,所以如果你能帮我解决这个问题,我将不胜感激!
由于这与我当前的问题有些相关,因此我将把它作为一个附带问题放在此处:除了这个 UI 解决方案之外,您还为与 dojo 的一对多表单界面使用了什么?