Zend_Form is fully configurable via
setOptions() and setConfig() (or by
passing options or a Zend_Config object to the
constructor). Using these methods, you can specify form elements,
display groups, decorators, and metadata.
As a general rule, if 'set' + the option key refers to a
Zend_Form method, then the value provided will be
passed to that method. If the accessor does not exist, the key is
assumed to reference an attribute, and will be passed to
setAttrib().
Exceptions to the rule include the following:
prefixPath will be passed to
addPrefixPaths()elementPrefixPath will be passed to
addElementPrefixPaths()displayGroupPrefixPath will be passed to
addDisplayGroupPrefixPaths()-
the following setters cannot be set in this way:
setAttrib (though setAttribs *will* work)
setConfig
setDefault
setOptions
setPluginLoader
setSubForms
setTranslator
setView
As an example, here is a config file that passes configuration for every type of configurable data:
[element] name = "registration" action = "/user/register" method = "post" attribs.class = "zend_form" attribs.onclick = "validate(this)" disableTranslator = 0 prefixPath.element.prefix = "My_Element" prefixPath.element.path = "My/Element/" elementPrefixPath.validate.prefix = "My_Validate" elementPrefixPath.validate.path = "My/Validate/" displayGroupPrefixPath.prefix = "My_Group" displayGroupPrefixPath.path = "My/Group/" elements.username.type = "text" elements.username.options.label = "Username" elements.username.options.validators.alpha.validator = "Alpha" elements.username.options.filters.lcase = "StringToLower" ; more elements, of course... elementFilters.trim = "StringTrim" ;elementDecorators.trim = "StringTrim" displayGroups.login.elements.username = "username" displayGroups.login.elements.password = "password" displayGroupDecorators.elements.decorator = "FormElements" displayGroupDecorators.fieldset.decorator = "Fieldset" decorators.elements.decorator = "FormElements" decorators.fieldset.decorator = "FieldSet" decorators.fieldset.decorator.options.class = "zend_form" decorators.form.decorator = "Form"
The above could easily be abstracted to an XML or PHP array-based configuration file.




