Dojo表单提交困境

时间:2012-07-09 18:16:46

标签: forms zend-framework dojo dijit.form

所以这就是问题所在。我们使用Zend_Dojo_Form创建了一些大的dojo表单。问题是,在每个元素工作时,验证不适用于任何提交按钮。由于标准布局的不灵活性,我们不得不使用视图。

我认为我的整个工作正常,直到我需要确保当你使用提交当前页面的快速链接(通过验证)从多页表单的页面转到页面时。 p>

我注意到当我在提交按钮上强制触发click事件时,没有进行任何验证(或者更确切地说,如果存在无效值,则无法阻止表单提交。这些值只是未提交。)

所以我查看了一些教程,我发现通过调用

验证了表单
dijit.byId('form-id').validate();

或我正在寻找的捷径,主要是(最初)

dijit.byId('form-id').submit();

这两个都不是函数,因为byId返回undefined。这意味着我们的观点 - 或者无论整个过程是什么 - 使用Zend生成dojo表单无论如何都是部分巫术 - 实际上并不生成dojo形式的dijit。

那么如何在一个视图中做到这一点?就像在,什么样的php调用或属性附加到表单标记,以使其被Dojo解释为表单dijit的基础?

以下是viewscript的代码:

<form action="<?= $this->escape($this->element->getAction()) ?>"
      method="<?= $this->escape($this->element->getMethod()) ?>"
      id="case-record-form">

1 个答案:

答案 0 :(得分:2)

这听起来与我遇到的问题非常相似。如果我通过回显它来渲染表单,验证工作,但是当使用视图时它不会。我发现在使用视图时,Zend不会将表单添加到其zendDijits数组中,因此您必须手动执行此操作。

添加如下内容:

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

位于viewscript的顶部。