[3.0][Formulare] Element mehrfach validieren

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Antworten
Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

[3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 25.03.2015, 22:07:47

Ich habe mir ein recht komplexes Formular gebastelt, welches aus vielen verschiedenen Formular-Feldern besteht, die auch zum grossen Teil validiert und gefiltert werden müssen.

Mir ist nun jedoch aufgefallen, dass ein Element, welches ich zuerst mit dem TextLengthValidator überprüfe und anschliessend mit dem IntegerValidator überprüfe, immer valide markiert wird, sobald ich einen Integer in das Feld eintrage, auch wenn dieser nicht meiner minlenght und maxlenght Definition entspricht.

Grundsätzliche Frage: Unterstützt das APF das mehrfache Validieren von Formular-Elementen? Ansonsten muss ich mir einen eigenen Validator für diesen Anwendungsfall schaffen.

Code: Alles auswählen

    <form:addvalidator
            class="APF\tools\form\validator\TextLengthValidator"
            button="sendProduktAdd"
            control="produktname|barcode"
            />

    <form:addvalidator
            class="APF\tools\form\validator\IntegerValidator"
            button="sendProduktAdd"
            control="barcode"
            />
barcode ist grundsätzliche valide, sobald ein gültiger Integer ins Feld eingegeben wird. Dieser muss allerdings eine Länge zwischen 8 und 13 Zeichen haben! Diese Kontrolle findet nicht mehr statt.


Ich musste ausserdem feststellen, dass es Ablauf-technisch klüger ist, erst die Filter und anschliessend die Validatoren im Templete zu definieren. Ist es nicht grundsätzlich vom APF her sinnvoller, erst zu filtern und dann zu validieren, egal wie ich dies im Templete definiere? Ich bin auch irgendwie der Meinung, im APF 1.x wäre das so gewesen.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dr.e. » 26.03.2015, 13:27:01

Hallo dave,
Mir ist nun jedoch aufgefallen, dass ein Element, welches ich zuerst mit dem TextLengthValidator überprüfe und anschliessend mit dem IntegerValidator überprüfe, immer valide markiert wird, sobald ich einen Integer in das Feld eintrage, auch wenn dieser nicht meiner minlenght und maxlenght Definition entspricht.
Das ist ungewöhnlich. Ein Feld wird zunächst mit $controlIsValid = true initialisiert und anschließend bei einer fehlgeschlagenen Validierung explizit auf false gesetzt. Das tut jeder Validator für dich selbst und es gibt keine Stelle, an der das wieder auf true zurück gesetzt wird.

Ich gehe daher davon aus, dass irgendwas am Validator nicht stimmt. Im APF 3 wurden diese ja ausgelagert. Schau dir mal https://github.com/AdventurePHP/code/tr ... validation an, ob dort ggf. ein Fehler zu finden ist.
Grundsätzliche Frage: Unterstützt das APF das mehrfache Validieren von Formular-Elementen? Ansonsten muss ich mir einen eigenen Validator für diesen Anwendungsfall schaffen.
Definitiv: ja!
Ich musste ausserdem feststellen, dass es Ablauf-technisch klüger ist, erst die Filter und anschliessend die Validatoren im Templete zu definieren. Ist es nicht grundsätzlich vom APF her sinnvoller, erst zu filtern und dann zu validieren, egal wie ich dies im Templete definiere? Ich bin auch irgendwie der Meinung, im APF 1.x wäre das so gewesen.
Korrekt, Filterung vor Validierung ist immer eine gute Idee. Hierzu wird es in der Doku von 3.0 einen entsprechenden Hinweis geben. Auf Grund der Optimierung des Parsers analysiert dieser nun das Template nicht mehr an Hand einer konkreten Liste von bekannten Tags, sondern an Hand der Struktur. Damit muss ein <form:addfilter /> vor den <form:addvalidator />-Tags platziert werden. Ferner muss auch ein <form:button /> vor allen <form:addfilter /> und <form:addvalidator /> platzoert werden, da sonst die Tags den Button nicht kennen. Für dieses Thema wurde in den Migrations-Skripten ein Task eingebaut und die Doku wird einen Hinweis enthalten.
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 26.03.2015, 22:59:01

Danke schonmal, da fühle ich mich in meiner Analyse ja gar nicht so doof bezüglich der Filter ;)

Morgen gibt's dann nochmal ein paar genauere Infos, da schaue ich mir das nochmal mit den ausgelagerten Validatoren an.

Benutzeravatar
Paric
Beiträge: 45
Registriert: 25.08.2014, 08:51:04

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von Paric » 27.03.2015, 08:19:37

Ich verfolge ja jedentag das Geschehen in diesem Forum, und damit auch den "Werdegang" von dave bzgl. 3.0.

Je mehr ich ein Bild davon bekomme was alles geändert ist in 3.0, desto gespannter bin ich wie groß eine Umstellung für mich werden wird wenn der Release da ist :D
Aber freudig gespannt.... :)

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 27.03.2015, 20:33:49

Der Umstieg von 2.1 auf 3.x ist recht entspannt. Den habe ich auch mal manuell anhand des Taschenrechner-Beispiels gemacht. Umstieg von 1.x ist natürlich heftig.
Ich hatte ja eine zweijährige Auszeit und habe damals mit dem APF 1.15-1.16 gearbeitet.

Aber keine Sorge, der Umstieg wird mit der grandiosen Hilfe von Christian und dem Rest vom Team schon klappen! ;)

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 28.03.2015, 17:14:02

Back to Topic:

Ich habe mir das nochmals angeschaut und ein paar Tests durchgeführt. Ich habe keine Ahnung, was am Mittwoch los war und wieso ich auf die Idee gekommen bin, die doppelte Validierung würde nicht richtig funktionieren. Insgesamt sieht das sehr gut aus. Vermutlich lags einfach am langen Tag.

Mein Problem war, dass ich den IntegerValidator genutzt habe, um eine Eingabe mit führender Null zu prüfen. Die Null geht aber bei (int) $input verloren und es wird false geworfen. Das ist aber mein Problem, ich muss für den Anwendungsfall den NumberScopeValidator verwenden.

Grünes Licht, alles in Ordnung :mrgreen:

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dr.e. » 28.03.2015, 20:48:44

Hallo dave,

dann ist ja alles gut! :) Schön, dass du den Effekt herausgefunden hast.

Ich freue mich ebenso, dass du den Umstieg als nicht so kompliziert siehst. Hast du die Migrations-Skripten schon mal genutzt?
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 30.03.2015, 20:56:58

dr.e. hat geschrieben:Hast du die Migrations-Skripten schon mal genutzt?
Nein. Aber ich habs mal versucht, bin aber zu keinem Ergebnis gekommen. Die Migrationsskripte einzeln ohne die *.sh Dateien funktioniert nicht :D Und die Shell ist online nicht verfügbar und ne Offline-Umgebung habe ich gar nicht :oops:

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dr.e. » 02.04.2015, 14:51:15

Hallo dave,
Die Migrationsskripte einzeln ohne die *.sh Dateien funktioniert nicht :D
An sich schon, allerdings nur, wenn du auch eine Shell hast. In diesem Fall dann für dich nicht brauchbar. Ist allerdings schade, denn dort stecken schon eine Vielzahl von Optimierungen drin, die du nun per Hand hachziehen musst. Vielleicht hilft dir da ja die offizielle Doku, sobald sie online ist.
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 02.04.2015, 17:33:36

Ok, dann werde ich mich nach Ostern mal um XAMPP bemühen ;)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dr.e. » 02.04.2015, 19:19:08

Apropos: http://adventure-php-framework.org/Page ... perimental

APF 3.0-RC1 ist nun verfügbar! 8-)
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [3.0][Formulare] Element mehrfach validieren

Beitrag von dave » 03.04.2015, 12:43:15

Hab ich bereits gesehen und mich sehr darüber gefreut. Endlich ist die Doku auch offiziell verfügbar.
Sehr gute Arbeit :) !

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste