Leser: 18
1 2 3 4 5 6
eval { my $context = $validate->assemble(); $validate ->check(...) ->check(...); };
1 2 3 4 5 6
$validate->assemble(sub{ $validate ->check(...) ->check(...) ->check(...); });
2009-05-29T12:32:53 GwenDragonIch habe mal den Titel etwas verständlicher angelegt. ISst doch so gemeint, oder?
2009-05-29T12:32:53 GwenDragonDas ganze in ein eval zu verpacken ist ja auch in anderen Sprachen wie mit try/catch üblich.
1 2 3 4 5 6 7 8 9 10 11 12 13
eval { $validate ->assemble() ->check(...) ->check(...) ->check(...); # Code wenn alle Checks okay waren. }; if ( $@ ) { # Fehler aufgetreten # Liste der Exceptions durchgehen und schauen welche Felder fehelrhaft waren }
QuoteDu kannst natürlich alle Funktionen hintereinander ablaufen lassen, ein Flag mitführen, bei jeder fehlgeschlagenen Aktion hochzählen. Wenn dieses Flag immer auf 0 ist, dann kannst du die Transaktion starten, ansonsten alles rückgängig machen.
2009-05-29T12:32:53 GwenDragonDer letzte Check muss dann allerdiengs nicht nur sammeln sondern muss dann eine echte Exception werfen, damit der eval Block beendet wird.
QuoteHmm, wegen des Handlings würde ich sozusagen alle Checks in eine Liste (Stack) schieben und dem letzten Eintrag in der Liste die Exceptionroutine zuweisen und dann den Stack nacheinander abarbeiten. Aber vielleicht ist das ein Dinosaurierrelikt, ein veraltetes Denken aus meinen Zeiten als Programmiererin für embedded systems.
QuoteHast du ein eigenes Exception-Handlung? Kannst ja mal auch auf CPAN nach exception suchen.
1 2 3 4 5 6
$validate->check([ { 'check', { ..options.. } }, { 'check', { ..options.. } }, { 'check', { ..options.. } }, { 'check', { ..options.. } }, ]);
Guest MatthiasWDu könntest auch eine Methode(zB lcheck) hernehmen und mit Arrayreferenzen füttern. lcheck() führt dann für jede der Arrayreferenzen ein check() aus und fängt die Exceptions ab. Nachdem alle check()s durchgelaufen sind, werden alle aufgetretenen Exceptions von lcheck() geworfen.
MfG
1 2 3 4
$validate->aggregate([ { email => $user_input_1, $options_href }, { email => $user_input_2, $options_href }, ]);
$validate->email($user_input, $options_href);
QuoteIf the built-in message generation doesn't suit you, it is also possible to provide your own by specifying a code reference:
msgs => \&my_msgs_callback
This will be called as a Data::FormValidator::Results method. It may receive as arguments an additional hash reference of control parameters, corresponding to the key names in the usually used in the msgs area of the profile. You can ignore this information if you'd like.
If you have an alternative error message handler you'd like to share, stick in the Data::FormValidator::ErrMsgs name space and upload it to CPAN.
QuoteMultiple constraints can be applied to a single field by defining the value of the constraint to be an array reference. Each of the values in this array can be any of the constraint types defined above.
2009-05-29T14:39:28 pktmHallo!
Nur so gefragt, was gefällt die Data::FormValidator nicht?
QuoteMan kann dort alles von einfach bis hin zu komplexen validationsprofilen erstellen und prüfen.