Options Form Element
The <options> element lets you specify a number of options within the context of a field. It must be a child of <field>. This element is represented by the dw.web.FormOptions API class.
Attribute | Description |
---|---|
optionid-binding | Identifies the binding method to use when getting and setting option ID values. |
value-binding | The values of the option that are allowed, bound to an object. |
label-binding | The option label presented on the browser, bound to an object. |
The previous attributes are similar to the <option> attributes, but they can be bound to an object.
Example
This example
(also used for <option>) specifies a list of identifying
password questions in the profile
form:
<field formid="question" label="Password Question" type="string" mandatory="false" binding="passwordQuestion">
<options>
<option optionid="MothersMaidenName" value="Mother's Maiden Name"/>
<option optionid="MakeOfFirstCar" value="Make of First Car"/>
<option optionid="FavoritePetsName" value="Favorite Pet's Name"/>
<option optionid="FathersFirstName" value="Father's First Name"/>
<option optionid="PlaceOfBirth" value="Place of Birth"/>
</options>
</field>
In the previous example, the options are hard coded. You can also build this information dynamically by binding metadata to objects, which represent that data as in-memory tables.
Using the example, the SiteGenesis application currently hardcodes country abbreviations in the customeraddress form, as follows:
<field formid="country" label="forms.country" type="string" mandatory="true" binding="countryCode"
missing-error="forms.customeraddress.country.missing-error">
<options>
<option optionid="" label="forms.customeraddress.selectone" value=""/>
<option optionid="US" label="country.unitedstates" value="US"/>
<option optionid="DE" label="country.germany" value="DE"/>
<option optionid="CA" label="country.canada" value="CA"/>
</options>
</field>
With object binding, the pipeline could instead perform within a loop, a dynamic get to a country object as follows, picking up new countries as they are supported by the storefront.
<field formid="country" label="forms.country.countries" type="string" mandatory="true" binding="countryCode">
<options optionid-binding="UUID
" value-binding="UUID
" label-binding="country
"/>
</options>