Hello! I found myself doing transformations (via callbacks) on a field depending on other fields of a form. Such as:
transformers => [{ type => 'Callback', callback => sub { my ($v, $p) = @_; return $p->{birth_defects} == 1 ? $v : 'other'; }, }], I discovered that, unlike in Constrains, the other form fields are not passed to Transformers as a second parameter. Here's a patch to achieve this. If (Carl) you think it's OK, I can commit it myself along with a test and documentation changes. Thanks, Michele. -- Michele Beltrame http://www.cattlegrid.info/ ICQ 76660101 - MSN [EMAIL PROTECTED]
--- devel/formfu/trunk/HTML-FormFu/lib/HTML/FormFu/Transformer.pm +++ wdev/cheiron/cryo/Cryo/lib/HTML/FormFu/Transformer.pm @@ -9,15 +9,15 @@ use Carp qw/ croak /; sub process { - my ( $self, $values ) = @_; - + my ( $self, $values, $params ) = @_; + my $return; my @errors; if ( ref $values eq 'ARRAY' ) { my @return; for my $value (@$values) { - my ($return) = eval { $self->transformer($value); }; + my ($return) = eval { $self->transformer($value, $params); }; if ($@) { push @errors, $self->return_error($@); push @return, undef; @@ -29,7 +29,7 @@ $return = [EMAIL PROTECTED]; } else { - ($return) = eval { $self->transformer($values); }; + ($return) = eval { $self->transformer($values, $params); }; if ($@) { push @errors, $self->return_error($@); }
--- devel/formfu/trunk/HTML-FormFu/lib/HTML/FormFu/Transformer/Callback.pm +++ wdev/cheiron/cryo/Cryo/lib/HTML/FormFu/Transformer/Callback.pm @@ -6,13 +6,13 @@ __PACKAGE__->mk_accessors(qw/ callback /); sub transformer { - my ( $self, $value ) = @_; + my ( $self, $value, $params ) = @_; my $callback = $self->callback || sub {1}; no strict 'refs'; - my $return = $callback->($value); + my $return = $callback->($value, $params); return $return; }
_______________________________________________ HTML-FormFu mailing list HTML-FormFu@lists.scsys.co.uk http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu