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
[email protected]
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu