Building on the dijit view
helpers, the Zend_Dojo_Form family of classes
provides the ability to utilize Dijits natively within your forms.
There are three options for utilizing the Dojo form elements with your forms:
Use
Zend_Dojo::enableForm(). This will add plugin paths for decorators and elements to all attached form items, recursively. Additionally, it will dojo-enable the view object. Note, however, that any sub forms you attach after this call will also need to be passed throughZend_Dojo::enableForm().Use the Dojo-specific form and subform implementations,
Zend_Dojo_FormandZend_Dojo_Form_SubFormrespectively. These can be used as drop-in replacements forZend_FormandZend_Form_SubForm, contain all the appropriate decorator and element paths, set a Dojo-specific default DisplayGroup class, and dojo-enable the view.Last, and most tedious, you can set the appropriate decorator and element paths yourself, set the default DisplayGroup class, and dojo-enable the view. Since
Zend_Dojo::enableForm()does this already, there's little reason to go this route.
Example 351. Enabling Dojo in your existing forms
"But wait," you say; "I'm already extending Zend_Form with my own
custom form class! How can I Dojo-enable it?'"
First, and easiest, simply change from extending
Zend_Form to extending Zend_Dojo_Form,
and update any places where you instantiate
Zend_Form_SubForm to instantiate
Zend_Dojo_Form_SubForm.
A second approach is to call Zend_Dojo::enableForm()
within your custom form's init() method; when the form
definition is complete, loop through all SubForms to dojo-enable
them:
<?php
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);
}
}
}
Usage of the dijit-specific form decorators and elements is just like using any other form decorator or element.




