## The Input Widgets

Templating System : Widget Reference : Input

### Overview

These widgets provide a variety of HTML controls, all of which are based on `<input type=...>`. In particular, the hidden, text, radio and checkbox widgets are currently implemented; their use is demonstrated in the acs-templating demo.

### The Hidden Widget

This is simply an `<input type=hidden>` widget, which is used for passing pre-set variables along with the form.

### The Text Widget

This widget allows the user to enter one line of text. It is completely identical to the <input type=text>. The `-html` parameter can be used to set its properties (such as `size`, `maxlength`, etc.), as described in the general widgets reference. The value of this widget is the text string.

### The Radio Group Widget

This widget actually represents a group of radio buttons, at most one of which can be selected at any given time. The widget has one required parameter, `-option` option_list, which specifies the radio buttons to display. The option_list is a list of label-value pairs. For example,

>     template::element create test_form cost \
>      -label "Car Cost" -datatype number -widget radio \
>      -options { {Cheap 1000} {Medium 50000} {Expensive 999999} }

will create a radio button group with 3 options: "Cheap", whose value is 1000, "Medium", whose value is 50000, and "Expensive", whose value is 999999. The value of the entire widget is either the empty string (if the user did not select any of the radio buttons), or a the value of the currently selected radio button. For instance, if the user selects "Medium" in the example above, the value of `cost` will be `50000`.

The default form template renders the Radio Group widget as a column of radio buttons. Since the Radio Group can consist of many HTML controls, the usual formwidget tag cannot be used to position the widget; instead, the formgroup tag must be used.

### The Checkbox Group Widget

This widget is identical in use to the Radio Group widget, but instead of radio buttons it generates a group of checkboxes, any number of which can be checked at any given time. The `values` (plural) property of the corresponding element contains a list of all the checked values; the `value` (singular) property contains the first element in the list.

templating@arsdigita.com