Validatoren
Mit Hilfe von Validatoren lassen sich Eingaben in Datenfeldern vor dem Speichern in die Datenbank prüfen. Limbas bietet dazu mehrere Möglichkeiten.
Reguläre Ausdrücke
Die einfachste Möglichkeit besteht darin, die regulären Ausdrücke der Feldtypen zu nutzen. Dazu wird für jeden Feldtyp der hinterlegte reguläre Ausdruck im Formular (JavaScript) sowie auf Server Seite (PHP) angewendet um den Inhalt auf Richtigkeit zu prüfen. Diese Funktionalität ist standardmäßig integriert. Die Regulären Ausdrücke sind anpassbar.
Rechte
Über die Gruppenrechte Gruppenrechte können pro Feld Schreibrechte nach eigenen Kriterien erstellt werden. Diese Rechte überprüfen ob überhaupt in ein Feld geschrieben werden darf. Somit sind sie für nur für eine Vorab-Überprüfungen geeignet.
Trigger
Trigger sind der klassische Weg für Validierungen. Dazu kann ein Datenbanktrigger sowie ein Limbas PHP Trigger die Eingaben überprüfen und das speichern unterbinden.
Validator Funktion
Die komfortableste Möglichkeit nutzt eine Validator Funktion um die eingegeben Werte zu überprüfen. Dazu muss eine Funktion „lmb_ValidatePostRequest($params[Array])“ in einer Extension Datei ext_ajax.inc existieren. Zusätzlich muss die Prüfen pro Tabelle in den Tabelleneinstellungen über den Punkt „Validierungsprüfung“ aktiviert werden. Falls beide Punkte zutreffen wird vor dem speichern des Formulars eine Vorabanfrage mit dem kompletten Inhalt des Formulars an die Funktion gesendet. Der Inhalt des Arrays ($params) muß explizit ausgewertet werden. Es bietet sich an in der Funktion nach den Kriterien wie z.B. welche Tabelle oder welches Formular oder Usergruppe eine eigene Struktur mit Unterfunktionen oder Klassen zu erstellen. Der Rückgabewert ist ein Array welches den status und value beinhaltet. Folgende Stati sind möglich:
- true // wird ohne Rückfrage gespeichert
- false // wie notice
- notice // wird nach Hinweis gespeichert
- alert // wie nach Hinweis nicht gespeichert
- confirm // wird nach Nachfrage gespeichert
- submit // wie true
Ist der Status „alert“ können zusätzlich eine „class“ und ein „title“ für die betreffenden Eingabefelder mitgegeben werden. Dadurch ist es möglich Felder hervorzuheben und eine Beschreibung als title zu setzen. Das Array hat folgendes Format:
- [‚title‘][ELEMENTID] = ‚TEXT‘
- [‚class‘][ELEMENTID] = ‚TEXT‘
Beispiel
function lmb_ValidatePostRequest(&$params){
if($params['gtabid'] == 2 && $params['formid'] == 1){
if(is_numeric($params['gtabid'][g_2_1])){
return true;
}else{
$out['status'] = 'alert';
$out['value'] = 'Es können nur Zahlen gespeichert werden!';
$out['title']['g_5_3'] = 'nur Zahlen erlaubt';
$out['class']['g_5_3'] = 'lmbGlistBodyNotice notice1';
}
return $out;
}
return true;
}