【发布时间】:2012-07-09 18:16:46
【问题描述】:
所以这就是问题所在。我们有一些使用 Zend_Dojo_Form 创建的大型 dojo 表单。问题是验证在每个元素上工作时,对任何提交按钮都不起作用。由于标准布局的不灵活性,我们不得不使用视图脚本。
我以为我的整个工作都很好,直到我需要确保当您使用快速链接从一个页面转到多页表单的页面时,它提交了当前页面(带有验证)。
我注意到,当我在提交按钮上强制触发 click 事件时,没有发生验证(或者更确切地说,如果存在无效值,则不会阻止表单提交。这些值只是没有提交。)
所以我查看了一些教程,发现表单是通过调用来验证的
dijit.byId('form-id').validate();
或我正在寻找的捷径,主要是(最初)
dijit.byId('form-id').submit();
这两个都不是函数,因为 byId 返回的是未定义的。这意味着我们的视图脚本 - 或者无论整个过程是什么 - 使用 Zend 生成 dojo 表单无论如何都是部分巫术 - 实际上并不生成 dojo 表单 dijit。
那么如何在视图脚本中做到这一点?例如,什么样的 php 调用或属性会附加到表单标记以使其被 Dojo 解释为表单 dijit 的基础?
这是来自视图脚本的代码:
<form action="<?= $this->escape($this->element->getAction()) ?>"
method="<?= $this->escape($this->element->getMethod()) ?>"
id="case-record-form">
【问题讨论】:
-
你在使用dojo视图助手吗?
-
,是的。加上用 class='nihilo' 将整个东西包装在一个 div 中。我敢肯定,如果没有它,这些字段甚至不会单独验证。
-
我只需要知道在我的视图脚本开头需要调用什么,以确保创建的表单被解释为定义 dijit...现在它没有。跨度>
-
似乎 Zend 正在某个地方创建一个 zenddijits 列表,该列表是一个使用 mixin() 解析的数组 - 我可以在我的视图脚本中调用什么函数来确保将表单容器本身添加到此列表中?有人有什么想法吗?
-
有人吗?这是关键任务。
标签: forms zend-framework dojo dijit.form