0

所以这就是问题所在。我们有一些使用 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">
4

1 回答 1

2

这听起来与我遇到的问题非常相似。如果我通过回显表单来呈现表单,则验证有效,但在使用视图脚本时不会。我发现在使用 viewscript 时,Zend 不会将表单添加到它的 zendDijits 数组中,因此您必须手动完成。

添加类似:

$script = 'zendDijits.push({"id":"MyFormId","params":{"dojoType":"dijit.form.Form"}})';
$this->headScript()->appendScript($script);

在视图的顶部。

于 2012-08-09T18:47:55.313 回答