php - 在 Zend Framework 2 应用程序的表单集合中使用 dgrid

标签 php dojo zend-framework2 dgrid zend-form2

对于我们的新项目,我们已经开始使用 Zend Framework 2 和 Dojo 1.8。 ZF2 有一个完全重写的表单模块,它现在具有用于一对多关系的新 CollectionElement。关于我发现的 UI,dgrid 最适合这种关系(使用编辑器列插件),所以我开始扩展 FormCollection、FormRow 和 FormElement View 助手,以便它们可以呈现所需的 dgrid。一切都很好,直到我意识到我无法为 dgrid 小部件设置每行输入名称。

我从 ZF2 documentation rearding form collections 开始.可以看到,集合输入元素具有类似数组的名称,例如

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 的一对多表单界面使用什么?

最佳答案

在Zend framework version 2中,“Zend\Form”本身具有动态添加新元素到“Collection element”的能力。

可以查一下here

关于php - 在 Zend Framework 2 应用程序的表单集合中使用 dgrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551661/

相关文章:

php - Symfony 3 包创建总是抛出 "Edit the composer.json file"

javascript - dojo 相当于事件 .change()

javascript - 如何将 CSS 类/样式设置为 GridX 中的特定列?

doctrine-orm - zf2 的学说映射异常 :class "" does not exist?

javascript - zend Framework 2 操作中带有 javascript 的警报框

php - 函数中 if 语句中的 t 字符串错误

php - Zend Paginator - 如何获取分页器中的第一个元素?

php - 构建表单的最快方法 - PHP/jQuery/CodeIgniter

javascript - Dojo 和 StackController/StackContainer

PHP ZF2 单元测试调度方法非常慢