Am 09.03.2009 um 10:39 schrieb Carl Franks:
2009/3/8 Moritz Onken <on...@houseofdesign.de>:
For HashRef to work properly I need a method to unset the values of
each
field.
I tried that with:
map { eval { $_->default(undef) } } (grep { $_->is_field }
@{$form->get_all_elements});
which works fine, but fails on a Date element with:
Invalid date format: at lib/HTML/FormFu/Element/Date.pm line 150
Is this a Date (DateTime) bug because you cannot set it to undef or
should I
try another
way to set these fields to undef.
I think it's reasonable to be able to do $date->default( undef );
but are you sure that's what's triggering this error?
line 150 is inside a:
elsif ( defined( $default = $self->default ) )
Carl
Right, I probably mixed things up. Nevertheless here is a patch for
Date.pm and
a test which fails without that patch.
Index: /Users/mo/Documents/workspace/HTML-FormFu/lib/HTML/FormFu/
Element/Date.pm
===================================================================
--- /Users/mo/Documents/workspace/HTML-FormFu/lib/HTML/FormFu/Element/
Date.pm (revision 1360)
+++ /Users/mo/Documents/workspace/HTML-FormFu/lib/HTML/FormFu/Element/
Date.pm (working copy)
@@ -99,7 +99,7 @@
for my $i (0 .. $#order) {
my $field = $order[$i];
- $self->_elements->[$i]->default( $self->$field-
>{default} );
+ $self->_elements->[$i]->default( $value ? $self->
$field->{default} : undef );
}
}
### t/elements/date_undef.t
use strict;
use warnings;
use Test::More tests => 2;
use HTML::FormFu;
my $form = HTML::FormFu->new(
{ tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } } );
$form->populate({elements => [{type => "Date", name => "foo", default
=> '30-08-2009'}]});
$form->process;
like($form->render, qr/value="2009" selected="selected"/);
$form->get_field('foo')->default(undef);
like($form->render, qr/value="2009">/);
_______________________________________________
HTML-FormFu mailing list
HTML-FormFu@lists.scsys.co.uk
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu