In einer Webanwendung, die Daten über Formulare pflegt/verwaltet, ist es
essentiell, die Eingabedaten vor der Speicherung akribisch zu prüfen.
Im Falle einer Regelverletzung wird mit einer aussagekräftigen Fehlermeldung
zum ausgefüllten Formular zurückgekehrt und auf das betreffende Eingabefeld
positioniert (also der Eingabefokus gesetzt).
Wie lässt sich dies effektiv erreichen?
- Die Prüfmethoden sind in der Klasse Quiq::Assert enthalten
- Wir führen die Tests in einem eval-Block durch
*
if ($aktion eq 'Speichern') {
my $field;
eval {
my $val;
my $a = Quiq::Assert->new;
$field = 'NAME1';
$val = $self->param($field)
if (!$a->METHOD1($val)) {
die "FEHLER: $field verletzt METHOD1\n";
}
if (!$a->METHOD2($val)) {
die "FEHLER: $field verletzt METHOD2\n";
}
...
$field = 'NAME2';
$val = $self->param($field);
if (!$a->METHOD3($val)) {
die "FEHLER: $field verletzt METHOD3\n";
}
};
if ($@) {
$@ =~ s/\n$//;
my $url = '/FORMULAR?'."navMsg=$@&navFocus=$field&".
$self->req->params->to_string;
$self->redirect_to($url);
return;
}
...
}