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

Reply via email to