sub new {
- bless {}, $_[0];
+ my ($class, $default) = @_;
+ bless {default => $default}, $class;
}
sub _attr {
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{type} = 'hidden' unless defined $attr->{type};
return $self->tag(input => $attr);
$attr->{name } = $name if defined $name;
$attr->{value} = $value if defined $value;
+ $attr->{value} = $self->{default}->{$name}
+ if not defined $attr->{value} and defined $name and defined $self->{default};
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'text' unless defined $attr->{type} or defined $attr->{rows};
$value = delete $attr->{value} if defined $attr->{rows};
my $self = shift;
my ($name, $rows, $default, $attr) = $self->_attr(3, @_);
- $default = $attr->{value} unless defined $default;
- delete $attr->{value}; # never a parent attribute
-
$attr->{name} = $name;
$attr->{id} = $attr->{name} unless defined $attr->{id};
$attr->{type} = 'select' unless defined $attr->{type};
+ $default = $attr->{value} unless defined $default;
+ delete $attr->{value}; # never a parent attribute
+ $default = $self->{default}->{$name}
+ if not defined $default and defined $name and defined $self->{default};
+
my @options = map { ref $_ ? $_ : {value => $_} } @$rows;
my @return;
use Test::More;
-plan tests => 59;
+plan tests => 65;
use_ok('HTML::Form::Simple');
'various checkboxes'
);
+# defaults
+
+my $defform = HTML::Form::Simple->new({foo => '<">', '' => 'empty', 0 => 0});
+ok($defform, 'form with defaults');
+
+is(
+ $defform->hidden(''),
+ '<input name="" type="hidden" value="empty">',
+ 'hidden with default'
+);
+
+is(
+ $defform->hidden(undef),
+ '<input type="hidden">',
+ 'nameless hidden'
+);
+
+is(
+ $defform->text('foo'),
+ '<input id="foo" name="foo" type="text" value="<">">',
+ 'input with default'
+);
+
+is(
+ $defform->text('foo', {value => 'custom'}),
+ '<input id="foo" name="foo" type="text" value="custom">',
+ 'input with value and default'
+);
+
+is_deeply(
+ [ $defform->radio(0 => undef, [1, 0]) ],
+ [
+ '<input id="0_1" name="0" type="radio" value="1">',
+ '<input checked id="0_0" name="0" type="radio" value="0">',
+ ],
+ 'select with default'
+);
+
#TODO