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

Reply via email to