NAME

HTML::FormHandler::Field::Compound - field consisting of subfields

SYNOPSIS

This field class is designed as the base (parent) class for fields with multiple subfields. Examples are HTML::FormHandler::DateTime and HTML::FormHandler::Duration.

A compound parent class requires the use of sub-fields prepended with the parent class name plus a dot

has_field 'birthdate' => ( type => 'DateTime' );
has_field 'birthdate.year' => ( type => 'Year' );
has_field 'birthdate.month' => ( type => 'Month' );
has_field 'birthdate.day' => ( type => 'MonthDay');

If all validation is performed in the parent class so that no validation is necessary in the child classes, then the field class 'Nested' may be used.

Error messages will be applied to both parent classes and child classes unless the 'errors_on_parent' flag is set. (This flag is set for the 'Nested' field class.)

The process method of this field runs the process methods on the child fields and then builds a hash of these fields values. This hash is available for further processing by "actions" in HTML::FormHandler::Field and the validate method.

Example:

has_field 'date_time' => ( 
    type => 'Compound',
    actions => [ { transform => sub{ DateTime->new( $_[0] ) } } ],
);
has_field 'date_time.year' => ( type => 'Text', );
has_field 'date_time.month' => ( type => 'Text', );
has_field 'date_time.day' => ( type => 'Text', );

widget

Widget type is 'compound'