Most form elements can use the DijitElement decorator, which will grab the dijit parameters from the elements, and pass these and other metadata to the view helper specified by the element. For decorating forms, sub forms, and display groups, however, there are a set of decorators corresponding to the various layout dijits.
All dijit decorators look for the dijitParams property of
the given element being decorated, and push them as the
$params array to the dijit view helper being used; these
are then separated from any other properties so that no duplication of
information occurs.
Just like the ViewHelper decorator, DijitElement expects a helper property in the element which it will then use as the view helper when rendering. Dijit parameters will typically be pulled directly from the element, but may also be passed in as options via the dijitParams key (the value of that key should be an associative array of options).
It is important that each element have a unique ID (as fetched from
the element's getId() method). If duplicates are
detected within the dojo() view helper, the decorator
will trigger a notice, but then create a unique ID by appending the
return of uniqid() to the identifier.
Standard usage is to simply associate this decorator as the first in your decorator chain, with no additional options.
Example 352. DijitElement Decorator Usage
<?php
$element->setDecorators(array(
'DijitElement',
'Errors',
'Label',
'ContentPane',
));
The DijitForm decorator is very similar to the Form decorator; in fact, it can be used basically interchangeably with it, as it utilizes the same view helper name ('form').
Since dijit.form.Form does not require any dijit parameters for configuration, the main difference is that the dijit form view helper require that a DOM ID is passed to ensure that programmatic dijit creation can work. The decorator ensures this, by passing the form name as the identifier.
The DijitContainer decorator is actually an abstract
class from which a variety of other decorators derive. It offers
the same functionality of DijitElement,
with the addition of title support. Many layout dijits require or
can utilize a title; DijitContainer will utilize the element's
legend property, if available, and can also utilize either the
'legend' or 'title' decorator option, if passed. The title will be
translated if a translation adapter with a corresponding
translation is present.
The following is a list of decorators that inherit from
DijitContainer:
AccordionContainer
AccordionPane
BorderContainer
ContentPane
SplitContainer
StackContainer
TabContainer
Example 353. DijitContainer Decorator Usage
<?php
// Use a TabContainer for your form:
$form->setDecorators(array(
'FormElements',
array('TabContainer', array(
'id' => 'tabContainer',
'style' => 'width: 600px; height: 500px;',
'dijitParams' => array(
'tabPosition' => 'top'
),
)),
'DijitForm',
));
// Use a ContentPane in your sub form (which can be used with all but
// AccordionContainer):
$subForm->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'dl')),
'ContentPane',
));




