Rose-HTML-Objects
view release on metacpan or search on metacpan
t/form-repeatable.t view on Meta::CPAN
'children.3.gender' => 'F',
});
$form->init_fields;
@forms = $form->form('children')->forms;
is(scalar @forms, 3, 'sparse repeated form 4');
ok($form->form('children')->form(2)->is_empty, 'sparse repeated form 5');
BEGIN
{
package MyPerson;
our @ISA = qw(Rose::Object);
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(name age bday gender start) ],
);
package MyAddress;
our @ISA = qw(Rose::Object);
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(street city state zip) ],
);
package MyPersonForm;
our @ISA = qw(Rose::HTML::Form);
sub build_form
{
my($self) = shift;
$self->add_fields
(
name =>
{
type => 'text',
size => 25,
},
age =>
{
type => 'integer',
positive => 1,
},
gender =>
{
type => 'radio group',
choices => { 'm' => 'Male', 'f' => 'Female' },
default => 'm',
},
bday =>
{
type => 'datetime split mdy',
},
start =>
{
type => 'datetime split mdyhms',
},
);
}
sub person_from_form { shift->object_from_form('MyPerson') }
package MyAddressForm;
our @ISA = qw(Rose::HTML::Form);
sub build_form
{
my($self) = shift;
$self->add_fields
(
street =>
{
type => 'text',
size => 25,
},
city =>
{
type => 'text',
size => 25,
},
state =>
{
type => 'text',
size => 2,
},
zip =>
{
type => 'text',
size => 10,
},
);
}
sub validate
{
my($self) = shift;
$self->SUPER::validate or return 0;
$self->field('street')->error('Blah');
no warnings 'uninitialized';
return ($self->field('zip')->internal_value == 666) ? 0 : 1;
}
sub address_from_form { shift->object_from_form('MyAddress') }
package MyPersonAddressesForm;
our @ISA = qw(Rose::HTML::Form);
sub build_form
{
( run in 0.675 second using v1.01-cache-2.11-cpan-71847e10f99 )