WebsiteBaker Support (2.12.x) > Modules
Benutzerspezifische Evaluierung in mpform
bbs2:
Hallo Martin,
Dein Vorschlag
"Oder wie wäre es, wenn es eine private Funktion gäbe, die $field_id und $post_field übergeben bekommt und einen String für $err_txt[] zurückliefert. Ist der String leer, ist alles Ok, ansonsten wird die $field_id zu $fer[] hinzugefügt sowie der Rückgabewert in $err_txt[] eingefügt? "
würde eine benutzerdefinierte Evaluierung außerhalb der evalform.php ermöglichen und ist somit ein wesentlicher Fortschritt
für Eingabeüberprüfunge n weit über eine Pflichtfelddeklarie rung hinaus. Leider lässt ein Pflichtfelddeklarie rung immer noch
die Eingabe von viele Unsinn zu.
Verstehe ich richtig, dass Dein Vorschlag jedoch nach der browsergestützten Prüfung erfolgt. Dies würde leider weiterhin bedeuten, dass zunächst alle Pflichteingaben gemacht werden müssen. Erst nach Bewältigung dieser Stufe würden die Eingaben gemäß der privat.php durchgeführt. Im Extremfall müsste der Absender also noch einmal alle Pflichteingaben korrigieren, da sie nicht den Vorgaben bzw. Wünschen des Empfängers entsprechen.
Beispiel:
Funktionsweise in der Version .....28
1. Geburtstag ist Pflichteingabe
2. Absender lässt das Feld leer und sendet das Formular
3. Browser lehnt die Speicherung ab, da Pflichteingabe nicht erfüllt. Es erfolgt keine weitere Hilfe.
4. Absender gibt Geburtstag in der Zukunft ein (12.08.2020) oder auch ein anderes unzulässiges Datum.
5. Browser akzeptiert, da das Feld nicht leer ist.
6. Die benutzerdefinierte Evaluierung in der evalform.php bzw. der privat.php startet erst jetzt und lehnt jedoch das Geburtstsdatum ab, da nur Personen akzeptiert werden, die mindestens 18 Jahre und hochstens 50 Jahre alt sind.
Besser wäre und dies funktionierte so noch in der Version .....24
1. Geburtstag ist Pflichteingabe
2. Absender lässt das Feld leer oder gibt ein unzulässiges Datum ein und sendet das Formular ab
3. Die benutzerdefinierte Evaluierung in der evalform.php bzw. besser in der privat.php startet und lehnt jedoch das Geburtstsdatum ab, da nur Personen akzeptiert werden, die mindestens 18 Jahre und hochstens 50 Jahre alt sind. Gleichzeitig erfolgt die Errormeldung, dass das Geburtsjahr größer 1968 und kleiner 2002 sein muss.
Ähnlich könnte dies mit PLZ geschehen, wenn nur Personen Daten übertragen dürfen, deren Wohnsitz im Bundesland
RLP liegt. u.s.w.
Bisher konnte ich dies in der evalform in einem Schritt lösen.
Eine Evaluierung in der beigefügten Form ist mir noch möglich, egal in der evalform.php oder in der privat.php
(siehe Anlage).
Viele Grüße
Heinz
Martin Hecht:
Hallo Heinz,
ich habe eine Vorabversion gebaut, die glaube ich auf deine Anforderungen passt:
--- Quote from: bbs2 on March 26, 2019, 01:56:05 PM ---Dein Vorschlag
"Oder wie wäre es, wenn es eine private Funktion gäbe, die $field_id und $post_field übergeben bekommt und einen String für $err_txt[] zurückliefert. Ist der String leer, ist alles Ok, ansonsten wird die $field_id zu $fer[] hinzugefügt sowie der Rückgabewert in $err_txt[] eingefügt?"
würde eine benutzerdefinierte Evaluierung außerhalb der evalform.php ermöglichen und ist somit ein wesentlicher Fortschritt für Eingabeüberprüfunge n weit über eine Pflichtfelddeklarie rung hinaus.
--- End quote ---
in der angehängten Version gibt es eine private_function_fo r_field, die genau wie oben beschrieben zu verwenden ist. Wenn es schon eine private.php gibt, wird diese nicht überschrieben. Die Vorlage aus private.default.php musst du daher explizit rüber kopieren. In die dortige Funktion könntest du deinen Code mehr oder weniger einfügen. ich habe es insofern vereinfacht, dass du nicht fer[] und err_txt[] setzen musst, sondern einfach nur einen String zurückgeben musst, wenn es an der Eingabe was zu bemängeln gibt.
--- Quote ---Leider lässt ein Pflichtfelddeklarie rung immer noch die Eingabe von viele Unsinn zu.
Verstehe ich richtig, dass Dein Vorschlag jedoch nach der browsergestützten Prüfung erfolgt. Dies würde leider weiterhin bedeuten, dass zunächst alle Pflichteingaben gemacht werden müssen. Erst nach Bewältigung dieser Stufe würden die Eingaben gemäß der privat.php durchgeführt. Im Extremfall müsste der Absender also noch einmal alle Pflichteingaben korrigieren, da sie nicht den Vorgaben bzw. Wünschen des Empfängers entsprechen.[...]
--- End quote ---
um dieses Problem anzugehen, habe ich in constants.php eine neue Konstante MPFORM_REQUIRED_ATT RIBUTE einngeführt. Wenn du eine Datei namens constants.user.php anlegst, die folgendes enthält:
--- Code: ---define('MPFORM_REQUIRED_ATTRIBUTE', '');
--- End code ---
dann wird das Verhalten auf das von Version 1.3.24 zurückgestellt. Es wird dann nämlich bei Pflichtfeldern anstelle eines "required"-Attributs ein Leersting (also nichts zusätzliches) eingefügt. Damit akzeptiert der Browser alle leer gelassenen Pflichtfelder und sendet wie gewohnt das halbausgefüllte Formular so dass es serverseitig durch die oben beschriebene private Funktion evaluiert werden kann.
viele Grüße,
Martin
bbs2:
Hallo Martin,
die Lösung verspricht einen wesentlichen Fortschritt im Modul.
Evtl. mache ich noch einen Fehler in der Umsetzung
Anbei die beiden neuen php-files, wobei die private.php testweise für nur ein Feld eine
benutzerdefinierte Evaluierung vorsieht. Es kommt jedoch nicht soweit. Siehe
http://test.bbsiikl.de/pages/anmeldung/bs-anmeldung.php
Die define-Anweisung führt zu einer Ausgabe des Befehls im frontend.
Viele Grüße
Heinz
bbs2:
Hallo,
es funktioniert. Ich Dussel hatte
<?php
vergessen. Ich teste weiter.
Gruß
Heinz
Martin Hecht:
und? gibt's was Neues zu berichten? positive oder negative Erfahrungen?
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version