# Dojo 表单元素和装饰器

建立在 dijit 视图助手 之上的 `Zend_Dojo_Form` 类家族在你的表单里自然地使用 Dijits。

有三个选项用来在你的表单里使用 Dojo 表单元素：

- 用 `Zend_Dojo::enableForm()`. 递归地为装饰器和所有表单的元素添加插件路径。 另外，它将 dojo-enable 视图对象。然而注意，任何在这个调用 之后 附加 的子表单也需要用 `Zend_Dojo::enableForm()`。

- 分别使用 Dojo-specific 表单`Zend_Dojo_Form`和子表单 `Zend_Dojo_Form_SubForm`实现。 这些可以做为 `Zend_Form` 和 `Zend_Form_SubForm`的随时替换，包含所有合适的装饰器 和元素路径，设置一个 Dojo-specific 缺省的显示组类并 dojo-enable 视图。

- 最后并且是最单调的是，你可以自己设置合适的装饰器和元素路径，设置缺省显示组类 并 dojo-enable 视图。因为 `Zend_Dojo::enableForm()` 已经做了这个， 有个小原因需要这样做。

## 在你的表单里开启 Dojo

“等等” 你会说，“我已经用我自己定制的表单类扩展了 Zend_form！怎么 Dojo-enable 它？”

首先而且是最简单的是，修改从 `Zend_Form` 扩展为从 `Zend_Dojo_Form` 扩展， 并更新任何实例化 `Zend_Form_SubForm` 的地方为实例化 `Zend_Dojo_Form_SubForm`。

第二个方法是在定制表单的 `init()` 方法里调用 `Zend_Dojo::enableForm()`； 当表单定义完成，遍历所有子表单来 dojo-enable 它们：

    class My_Form_Custom extends Zend_Form
    {
        public function init()
        {
            // Dojo-enable the form:
            Zend_Dojo::enableForm($this);

            // ... continue form definition from here

            // Dojo-enable all sub forms:
            foreach ($this->getSubForms() as $subForm) {
                Zend_Dojo::enableForm($subForm);
            }
        }
    }

dijit-specific 表单装饰器和元素的用法和使用任何其它表单装饰漆或元素一样。