Les éléments de formulaire et les décorateurs Dojo
Bâtie sur les
aides de vues dijit, la famille des classes
Zend_Dojo_Form fournit la possibilité d'utiliser les Dijits
nativement dans vos formulaires.
Il existe trois options pour utiliser les éléments de formulaires Dojo avec vos
formulaires :
Utilisez Zend_Dojo::enableForm(). Ceci ajoutera, de
manière récursive, les chemins de plugin des éléments et des décorateurs pour tous
les éléments de formulaires attachés. De plus, ceci active dojo dans l'objet de
vue. Notez, cependant, que tout sous-formulaire que vous attacherez
après cet appel devront eux aussi faire leur appel à
Zend_Dojo::enableForm().
Utilisez les implémentations de formulaires et sous-formulaires spécifiques à
Dojo, respectivement Zend_Dojo_Form et
Zend_Dojo_Form_SubForm. Ceux-ci peuvent être utilisés en
lieu et place de Zend_Form et
Zend_Form_SubForm, ils contiennent tous les chemins
appropriés des éléments et décorateurs, ils paramètrent une classe par défaut pour
les DisplayGroup spécifique à Dojo et activent dojo dans l'objet de vue.
En dernier, et le plus pénible, vous pouvez régler vous même les chemins
appropriés vers les décorateurs et les éléments, régler la classe de DisplayGroup
par défaut, et activer dojo dans l'objet de vue. Puisque
Zend_Dojo::enableForm() fait déjà ceci, il n'y a que peu de
raisons d'utiliser cette voie.
Activation de Dojo dans vos formulaires existants
"Mais attendez," vous allez me dire ; "j'étends déjà
Zend_Form avec ma propre classe de formulaire
personnalisé ! Comment puis-je activer Dojo ?'"
Premièrement, et sans doute le plus simple, étendez
Zend_Dojo_Form au lieu de Zend_Form, et
mettez à jour tous les endroits où vous intanciez
Zend_Form_SubForm en le remplaçant par
Zend_Dojo_Form_SubForm.
Une seconde approche consiste en un appel à
Zend_Dojo::enableForm() dans la méthode init() de
vos formulaires ; quand la définition du formulaire est complète, bouclez à travers
tous les sous-formulaires pour y activer dojo pour chacun :
getSubForms() as $subForm) {
Zend_Dojo::enableForm($subForm);
}
}
}
]]>
L'utilisation des éléments de formulaires et les décorateurs spécifiques à Dijit est
identique à l'utilisation de tous autres éléments de formulaires ou décorateurs.