Nun sind ein paar Tage vergangen und ich bin schlauer….

Die Smarty Form Validation-Engine ist zwar im Großen und Ganzen ganz nützlich jedoch hat die bei der Validierung vom Webshop keine bzw. kaum großen Nutzen gehabt.
Hintergrund ist, dass die meisten Calls im Webshop per AJAX erfolgen und ich partout keinen sinnvollen Weg gefunden habe die Validierungs-Messages in den Ajax-Response zu packen.

Daher habe ich mein eigenes kleines Framework gebastelt.
Einfach eine Klasse angelegt mit verschiedenen Attributen. Einem Form-Namen, einem Feldnamen, einer Methode. Alternativ noch ein Fieldname2 der auch als Methodenname missbraucht werden kann. Und nur für den Fall, dass es benötigt wird, ein Wert.
Die Klasse heißt: FieldCheckClass und wird quasi intern genutzt.

Dann schnell noch in der BaseFunctions 3 Funktionen geschrieben und ein paar Konstanten eingeführt und schon lief die Sache.
Wie das geht? Eigentlich ganz einfach.

Mit einer Methode addCheck($formIdentifier, $fieldName, $errorMessageId, $checkMethodType, [$fieldName2 / $methodName], [$constant]) wird ein Array von Check-Objekten gefüllt.

Diese Methode ruft man am Anfang einer PHP-Seite für jeden zu prüfenden Wert auf.
Als $checkMethodType können die Konstanten aus der Klasse CheckConstants genutzt werden.

Vor der Initialisierung sollte die Löschung der vormals eingestellten Checks erfolgen. Dies erfolgt mit der Methode resetChecks. Als Parameter wird dabei der $formIdentifier genutzt.

Natürlich daran denken, bestehende Einträge zu prüfen. Als Übergabe gibts einen Form-Identifier (wenn man ggf. mehrere Tabs gleichzeitig auf hat), den Formnamen, den Message-Code und die Prüfmethode.

Bisher habe ich folgende Methoden implementiert:

– Prüfung auf Leer – Konstante: $CHECK_EMPTY
– Prüfung auf korrekte Email-Adresse $CHECK_EMAIL
– Prüfung auf Gleichheit zweier Felder $CHECK_EQUAL_FIELDS
– Prüfung, dass mindestens ein Feld leer oder zwei Felder gleich sind $CHECK_EQUAL_OR_NULL
– Prüfung auf Gleichheit bzgl. einer Konstante $CHECK_EQUAL_CONSTANT
– Prüfung über SQL-Funktion $CHECK_SQL

Ganz stolz bin ich auf die letzte Methode. Die bekommt einen beliebige Methodennamen übergeben, führt diese Methode über die PHP-Methodik: call_user_func mit dem Inhalt des Feldes aus und bekommt als Boolean-Wert zurück geliefert, ob die Ausführung korrekt oder inkorrekt war. Bei Inkorrektheit wird die Message zum Message-Code zurückgeliefert.

Eine separate “Prüf-Routine” getErrorMessages() wird bei einem Post-Request oder Ajax-Call aufgerufen. Diese Methode iteriert durch das Array von Checks und überprüft die Werte zum vorher definierten Feld gegen die registrierten Methoden.
Liefert ein oder mehrere Checks einen Fehler, wird dieser zusammen gefasst und kann anschließend im Info-Bereich ausgegeben werden.
Alles in allem funktioniert das gar nicht so schlecht. Sogar der Method-Call ist absolut unproblematisch.

Ich werde es jedoch noch ein wenig ausfeilen und melde mich demnächst noch einmal.

Schreibe einen Kommentar

Artikel, die Dir auch gefallen könnten

Remote-Desktop unter Manjaro

Hallo da draußen, Leute die mich etwas besser kennen, wissen, dass ich ein großer Fan von Manjaro Linux bin. Ich nutze das schon seit etlichen

mehr...

Linux und Active Directory

Hallo Welt da draußen, heute bin ich mal wieder fast verzweifelt. Ein bisschen habe ich mich an meine Zeiten als Angestellter mit dem Projekt der

mehr...