Thread stehe auf dem Schlauch: Data::FormValidator::Constraints
(5 answers)
Opened by Superfrank at 2009-03-17 11:58
Tach
ich habs nun gefunden. Ich habe nicht berücksichtigt, daß ein Test wie validate_test1 nicht sondern zurückliefern muß, Die Fehlermeldung bezog sich die ganze Zeit auch darauf, und nicht, daß der constraint eine ungültige Funktion beinhaltet. Auch habe ich den constraint wie den übergebenen Wert benannt. Ich glaub dazu muß ich mir das Kapitel "MULTIPLE CONSTRAINTS" nochmal genauer durchlesen. Falls jeand damit herumspielen will, hier ein Beispiel mit nicht validem Ergebnis von validate_test1 : Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 #!/usr/bin/perl use strict; use warnings; use Data::FormValidator::Constraints qw(:closures); use Data::FormValidator; my %input = ( input1 => 'eins', input2 => 'zwei', input3 => 'drei', input4 => 'vier'); my $results = validate_input(\%input); print "result=$results\n"; # Print the name of missing fields if ( $results->has_missing ) { for my $f ( $results->missing ) { print $f, " is missing\n"; } } # Print the name of invalid fields if ( $results->has_invalid ) { for my $f ( $results->invalid ) { print $f, " is invalid: ", $results->invalid( $f ), "\n"; my $array_ref = $results->invalid( $f ); my @array = @$array_ref; foreach(@array){ print $_ . ' array' . "\n"; } } } # Print unknown fields if ( $results->has_unknown ) { for my $f ( $results->unknown ) { print $f, " is unknown\n"; } } # Print valid fields for my $f ( $results->valid() ) { print 'valid ' . $f, " = ", $results->valid( $f ), "\n"; } sub validate_input{ my $input_hash_ref = shift; my $big_test = { filters => 'trim', required => [qw( input1 input2 input3 input4 )], constraint_methods => { input1 => validate_test1( 'exists', {fields => [qw( input1 ) ]} ), input2 => validate_test2( 'exists', {fields => [qw( input2 ) ]} ), input3 => validate_test3( 'exists', {fields => [qw( input3 ) ]} ), input4 => validate_test4( 'exists', {fields => [qw( input4 ) ]} ), } }; my $results = Data::FormValidator->check($input_hash_ref, $big_test); print "result1=$results\n"; return($results); } sub validate_test1{ my ($type,$attrs) = @_; return sub { my $dfv = shift; $dfv->name_this('validate_test1'); # value of 'prospective_date' parameter my $val = $dfv->get_current_constraint_value(); # get other data to refer to my $data = $dfv->get_filtered_data; return(undef); } } sub validate_test2{ my ($type,$attrs) = @_; return sub { my $dfv = shift; $dfv->name_this('validate_test2'); # value of 'prospective_date' parameter my $val = $dfv->get_current_constraint_value(); # get other data to refer to my $data = $dfv->get_filtered_data; return(1); } } sub validate_test3{ my ($type,$attrs) = @_; return sub { my $dfv = shift; $dfv->name_this('validate_test3'); # value of 'prospective_date' parameter my $val = $dfv->get_current_constraint_value(); # get other data to refer to my $data = $dfv->get_filtered_data; return(1); } } sub validate_test4{ my ($type,$attrs) = @_; return sub { my $dfv = shift; $dfv->name_this('validate_test4'); # value of 'prospective_date' parameter my $val = $dfv->get_current_constraint_value(); # get other data to refer to my $data = $dfv->get_filtered_data; return(1); } } Danke für Eure Hilfe! Frank edit: anmerken wollte ich noch, daß es Blödsinn ist den Namen des Constraints, also den zu überprüfendne Wert über "fields => [qw( input1 )" zu übergeben, da der ja mit Code (perl): (dl
)
my $val = $dfv->get_current_constraint_value(); ausgelesen werden kann. Last edited: 2009-03-18 12:10:11 +0100 (CET) |