MetaModels Workshop in Berlin
Ergebnis 1 bis 30 von 30

Thema: Formulareingabe formatieren und validieren (z.B. IBAN)

  1. #1
    Contao-Nutzer
    Registriert seit
    02.01.2014.
    Beiträge
    25

    Standard Formulareingabe formatieren und validieren (z.B. IBAN)

    Hallo,

    aktuell sollte ich es schaffen, Text-Formularfelder über die CONTAO-eigenen Möglichkeiten hinaus zu validieren und die Feldanzeige gleich bei der Eingabe zur formatieren. Ich gehe davon aus, dass dies am vernüftigsten zu machen ist über ein speziell dafür angepasste Input-Template (form_textfield.html5).

    Z.B. sollten bei der Eingabe einer IBAN

    • die ersten beiden Buchstaben DE unveränderbar vorgegeben sein
    • danach genau 20 Ziffern folgen
    • die Anzeige im Eingabefeld soll gemäß DIN gruppiert werden (fünf Vierergruppen, zuletzt zwei Ziffern, jeweils getrennt durch ein nicht zur Eingabe gehörendes Leerzeichen)
    • die IBAN entsprechend der Vorgaben plausibel (Prüfsummenberechnung mit Modulo 97-10-Operation)


    Eine Beschreibung der Prüfsummenberechnung (https://www.iban.de/iban-pruefsumme.html) sowie Javascript dafür (http://stackoverflow.com/questions/2...lidation-check) habe ich gefunden.

    Wer kann mir Tipps für die Umsetzung geben oder hat das schon mal gemacht?

    Vorab herzlichen Dank

    Contao Rookie

  2. #2
    Contao-Fan Avatar von manfred
    Registriert seit
    08.05.2011.
    Ort
    Schwäbisch Gmünd
    Beiträge
    541

    Standard

    Hallo,

    vielleicht könnte man diese Erweiterung dafür nutzen, bzw. natürlich entsprechend ergänzen.
    Frag doch mal bei den Entwicklern nach.

    https://contao.org/de/erweiterungsli...dation.de.html

    Gruß Manfred

  3. #3
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    1.856
    User beschenken
    Wunschliste

    Standard

    Moin,

    also für die Validierung wäre z.B. die Nutzung des "addCustomRegexp" möglich (https://docs.contao.org/books/api/ex...tomRegexp.html).

    Das ist das ne Serverseitige Validierung.

    Die Formatierung wird dann schon eher schwierig.

    Da könntest du mittels JS drauf ... oder aber eine eigenes Widget erstellen, welches dann mehrere Textfelder (ohne Label) zurück gibt.

    Gruß, Cliff
    Extensions :: Github :: Kein Support per PM.
    Bedenke stets: die Behebung eines Fehlers beginnt bei der Erklärung des Problems !!!
    Wenn ich dir helfen konnte freue ich mich immer über ein Dankeschön von meiner Amazon Wunschliste .

  4. #4
    Contao-Nutzer
    Registriert seit
    02.01.2014.
    Beiträge
    25

    Standard

    Vielen Dank für die Hinweise. Eigentlich hatte ich an JavaScript gedacht. Serverseitig wird es eher nicht gehen, weil es sich um ein mehrseitiges Formular mit efg und dabei nicht die letzte Seite handelt.

    Da ich immer wieder nur sporadisch in die Verlegenheit komme so tief in CONTAO rumzuprogrammieren: könnte mir jemand an einem modifizierten form_textfield.html5 ein Beispiel für eine eigene Trivial-Validierung machen (z.B. als Eingabe nur das Wort "TEST" erlaubt, das dann in groß umgewandelt würde, wenn "test" oder sowas eingegeben wird)? Sowas könnte ich mit meinen bescheidenen Kenntnissen für meine Anwendung dann anpassen...

    Das mit der Validierungs-Erweiterung schaue ich mir auch mal an...

    Herzliche Grüße

    Contao Rookie

  5. #5
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    hallo Contao Rookie

    ich stehe gerade vor einer ähnliche Herausforderung. Ich soll bei zwei Formularen die IBAN überprüfen.
    Wie hast Du die Berechnung der Prüfziffer gelöst? Per JavaScript? Oder kann man das auch unter "addCustomRegexp" einbauen?

    Gruß
    Daniel

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.613
    User beschenken
    Wunschliste

    Standard

    Ich hatte IBAN und BIC mal als rgxp für den Formulargenerator aufgesetzt. Siehe hier http://public.andreasburg.de/contao/yesdo-hooks.zip
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer
    Registriert seit
    02.01.2014.
    Beiträge
    25

    Standard

    Hallo Daniel,

    bisher konnte ich mein Problem leider nicht lösen. Ich stehe eher auf der Anwenderseite...

    Beste Grüße

    Contao Rookie

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.613
    User beschenken
    Wunschliste

    Standard

    Dann installiere doch erstmal die Erweiterung, die ich verlinkt habe. Dann hast du die korrekte Server seitige Validierung. Eine Client seitige Validierung mit JS ist ja relativ schnell aufgesetzt. Die regex aus der Erweiterung
    Code:
    DE\d{2}([ ]\d{4}){4}[ ]\d{2}|DE\d{20}
    kannst du wahrscheinlich auch für JS benutzen. Kannst du hier testen https://regex101.com/
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208

    Standard

    Als Anregung vielleicht noch: die Funktion verify_iban() von https://github.com/globalcitizen/php-iban verwenden. Dann hast Du zur syntaktischen Gültigkeit auch nich die Überprüfung der Prüfziffer.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    Danke für eure Antworten!

    @Andreas: Danke für Deine Erweiterung. Das klappt sofort …
    Da ich in PHP nicht so fit bin - kann ich die Überprüfung der Prüfziffer in den (das?) Hook einbauen? Oder geht das an der Stelle nicht?

    Auf alle Fälle bin ich jetzt schon einen großen Schritt weiter und will/muss jetzt nur noch das JavaScript entsprechend einbauen. Vorlagen habe ich etliche gefunden (unter anderem auch die, die Contao Rookie erwähnt hat).

    Liebe Grüße und eine gute Woche!
    Daniel

  11. #11
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.613
    User beschenken
    Wunschliste

    Standard

    Ja, das könne man dort einbauen. Dass es da ein Prüfverfahren gibt, hatte ich damals noch nicht auf dem Schirm. Ich habe im Moment leider keine Zeit das Prüfverfahren dort einzubauen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  12. #12
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Da ich in PHP nicht so fit bin - kann ich die Überprüfung der Prüfziffer in den (das?) Hook einbauen? Oder geht das an der Stelle nicht?
    l
    Warum sollte das nicht gehen? (Annahme natürlich: die von Dir verwendete Bibliothek ist in PHP geschrieben und installiert). Am Beispiel des oben vorgeschlagenen lobalcitizen/php-iban in etwa so:

    PHP-Code:
    // Annahme: globalcitizen/php-iban ist über Composer installiert
    require_once(TL_ROOT.'/composer/vendor/globalcitizen/php-iban/php-iban.php');

    class 
    yesdoHooks
    {
      public function 
    myAddCustomRegexp($strRegexp$varValueWidget $objWidget)
      {
        
    /**
         * @param  string  $strRegexp  The unknown regular expression string
         * @param  mixed   $varValue   The input value to be validated
         * @param  Widget  $objWidget  Form widget which is handling this input value. Use the widget's properties to retrieve information about the field configuration.
         *
         * @return  boolean  expects a boolean return value
         */
        
    if ($strRegexp == 'iban')
        {
          
    //if (!preg_match('/DE\d{2}([ ]\d{4}){4}[ ]\d{2}|DE\d{20}/', $varValue))
          
    if (!verify_iban(strtoupper($varValue))))  
          {
            
    $objWidget->addError(sprintf($GLOBALS['TL_LANG']['ERR']['iban'], $objWidget->label));
          }

          return 
    true;
        }
        if (
    $strRegexp == 'bic')
        {
          if (!
    preg_match('/[A-Z]{6}[A-Z2-9]{1}[A-NP-Z0-9]{1}(XXX|[a-wyzA-WYZ0-9]{1}[a-zA-Z0-9]{2}){0,1}/'$varValue))
          {
            
    $objWidget->addError(sprintf($GLOBALS['TL_LANG']['ERR']['bic'], $objWidget->label));
          }

          return 
    true;
        }

        return 
    false;
      }

    Stammtisch Contao Bayern: http://www.contao-bayern.de

  13. #13
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.613
    User beschenken
    Wunschliste

    Standard

    Das sieht ja einfach aus. Werde ich bei Zeiten einbauen. Danke.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  14. #14
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    @fiedsch - Danke, dass Du gleich eine Vorlage mitgeliefert hast. Das kann ich so umsetzen (und denke auch, dass ich halbwegs verstehe, um was es geht )

    Kurze Frage noch zur Installation der Bibliothek. Ich verwende nicht den Composer. Kann ich die php-Datei auch "einfach so" in das Verzeichnis "Vendor/globalcitizen/php-iban" kopieren? Oder geht das so nicht?

    Sorry, aber die Installation von Erweiterungen habe ich unter Contao noch nicht ganz "durchdrungen".

    Liebe Grüße
    Daniel

  15. #15
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208

    Standard

    Zitat Zitat von Daniel24 Beitrag anzeigen
    Kann ich die php-Datei auch "einfach so" in das Verzeichnis "Vendor/globalcitizen/php-iban" kopieren?
    Könntest Du -- solltest Du aber nicht. Das Verzeichnis wird von Composer "verwaltet" und es wäre unsauber, da rein zu pfuschen. Außerdem weiß ich nicht, ob Composer es bei einem Update evtl. sogar löschen würde. Du kannst Die Bibliothek aber an eine beliebige Stelle legen. Du must dann nur den Pfad im Code anpassen. Vielleicht packst Du es gleich mit in das Verzeichnis von @Andreas' Erweiterung.
    Geändert von fiedsch (24.04.2017 um 19:08 Uhr)
    Stammtisch Contao Bayern: http://www.contao-bayern.de

  16. #16
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    Und wie etwas gelernt … Danke, für die gute und konkrete Hilfe!

    Leider passiert jetzt nach dem Einfügen gar nichts mehr. Hier meine Vorgehensweise:
    1. den Code in der Datei von Andreas (yesdo-hooks/classes/yesdoHooks.php) ausgetauscht
    2. die das Verzeichnis "globalcitizen/php-iban/php-iban.php" in "yesdo-hooks" angelegt und die Datei "php-iban.php" dort hinein kopiert
    3. den Pfad in der Datei "yesdoHooks.php" geändert auf
    PHP-Code:
    require_once(TL_ROOT.'/system/modules/yesdo-hooks/globalcitizen/php-iban/php-iban.php'); 
    4. in der Eingabeprüfung des Formularfeldes "IBAN" ausgewählt

    Wenn ich dann das Formular teste (ist übrigens mehrseitig mit EFG), erscheint eine leere Seite. Ändere ich die Eingabeprüfung, ist wieder alles ok …

    Wahrscheinlich habe ich den Pfad verkehrt angegeben …

  17. #17
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208

    Standard

    Schalte doch mal (in den Contao Systemeinstellungen) Fehlermeldungen anzeigen ein oder schau in der error.log nach, was nicht passt.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

  18. #18
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    Die Anzeige der Fehlermeldung wirft eine klare Aussage zurück:
    Code:
    Parse error: syntax error, unexpected ')' in /www/htdocs/w01366b3/finanzen.bfp.de/system/modules/yesdo-hooks/classes/yesdoHooks.php on line 19
    Ist an diesem Befehl etwas verkehrt (hier hören meine PHP-Kenntnisse auf)
    PHP-Code:
    if (!verify_iban(strtoupper($varValue)))) 

  19. #19
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    659

    Standard

    Eine schliessende Klammer am Ende ist zu viel. Also so:
    PHP-Code:
    if (!verify_iban(strtoupper($varValue))) 
    (dreimal auf, heisst auch dreimal wieder zu)

  20. #20
    Contao-Nutzer Avatar von Daniel24
    Registriert seit
    24.06.2014.
    Beiträge
    42

    Standard

    Klar, wer zählen kann, ist im Vorteil
    Werde es nachher mal testen …*wobei ich denke, dass es funktionieren wird.

  21. #21
    Alter Contao-Hase
    Registriert seit
    22.06.2009.
    Ort
    Köln
    Beiträge
    1.330

    Standard

    Hallo zusammen,
    ich greife das Thema noch einmal auf.

    Ich benötige demnächst genau so eine IBAN Überprüfung für eine neue Contao 4.4 Seite.

    Es geht um ein Aboformular, welches über den normalen Formulargenerator von Contao erstellt wurde.
    Wie kann ich nun die hier gezeigten Infos einbauen? Gibt es ein neues Modul?

    Ich bin kein Programmierer und kenne mich da nicht so gut aus.

    Danke

    Grüße
    Matu
    Viele Grüße aus Köln
    Matu

  22. #22
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.613
    User beschenken
    Wunschliste

    Standard

    Wenn du es mit den oben gezeigten Lösungen nicht hinbekommst, dann müsstest du es dir erstellen lassen. Einfach mal bei Kleinstaufträge als Thread einstellen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  23. #23
    Contao-Nutzer
    Registriert seit
    09.02.2019.
    Beiträge
    9

    Standard

    Hi,

    wie bringe ich die yesdo-hooks.zip denn möglichst einfach in eine aktuelle Contao 4.6 Installation? Neben dem fehlenden Autoload-Installer von Contao 3 fehlt in meiner Installation auch die AppKernel.php, in der ich nach meinem Verständnis neue Module bekannt machen könnte. Ich habe mir zwar schon diverse Posts zum Thema Bundle-Erstellung angesehen. Allerdings bin ich bestenfalls Symfony-Einsteiger und habe zudem noch einen weiteren eigenen Contao 3 Hook, den ich auf die aktuelle Installation portieren will.

    Danke
    Andreas

  24. #24
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    In der Managed Edition brauchst du Contao 3 Extensions nicht extra bekannt machen. Die werden automatisch geladen.

    Warum brauchst du den Autoload-Installer?

  25. #25
    Contao-Nutzer
    Registriert seit
    09.02.2019.
    Beiträge
    9

    Standard

    Danke für die schnelle Rückmeldung! Ich hatte anfangs geglaubt die Autoload-Dateien oder ein entsprechendes Gegenstück seien auch in C 4 ME erforderlich. Tatsächlich wurde mein Modul zwischenzeitlich auch schon geladen, ich hatte es jedoch erst beim Blick in den Debugger bemerkt.

  26. #26
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Vienna, Austria
    Beiträge
    20.573
    User beschenken
    Wunschliste

    Standard

    Nach der manuellen Installation oder Deinstallation einer Contao 3 Extension in Contao 4 musst du immer manuell den Ordner var/cache löschen.

  27. #27
    Contao-Fan Avatar von fusch
    Registriert seit
    25.03.2012.
    Ort
    München
    Beiträge
    369

    Standard Contao 4 - Kleines Tutorial: IBAN im Formular validieren

    Liebes Forum,

    bei der Suche nach der Lösung dieses Problems habe ich diesen Thread gefunden und bin mit ein bißchen Hilfe (Danke @fiedsch) zu einer Lösung gekommen, die ich in einem Blog-Eintrag aufgeschrieben habe, damit andere auch was davon haben:

    https://www.contao-bayern.de/newsrea...alidieren.html

    Viel Spaß damit!

    Viele Grüße
    Hella
    Mitglied des Contao-Stammtisch München
    Aktuelle Termine erfährst Du immer unter www.contao-bayern.de
    Komm' doch mal vorbei!

  28. #28
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208

    Standard

    Hallo Hella,

    die Lösung sollte erst mal funktionieren, elegant finde ich sie aber nicht -- z.B. weil man die ID des Formulars angeben muss.

    Ein besserer Weg wäre wahrscheinlich, tl_form_field so zu erweitern:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_form_field']['fields']['rgxp']['options'][] = 'iban'
    Die rgxp iban ist Contao dann unbekannt und sollte den Hook addCustomRegexp (https://docs.contao.org/books/api/ex...tomRegexp.html) triggern. Im Hook selbst würde dann in etwa das gleiche stehen, wie in unserem Beispiel.

    Disclaimer: garantiert ungetestet! Vielleicht komme ich bis zum nächsten Stammtisch dazu das mal auszuprobieren und aufzuschreiben. Ich hänge es dann als Link an Deinen Artikel an.
    Stammtisch Contao Bayern: http://www.contao-bayern.de

  29. #29
    Contao-Fan Avatar von fusch
    Registriert seit
    25.03.2012.
    Ort
    München
    Beiträge
    369

    Standard

    Lieber Andreas,

    Zitat Zitat von fiedsch Beitrag anzeigen
    die Lösung sollte erst mal funktionieren, elegant finde ich sie aber nicht.
    Raum für Verbesserungen gibt es ja fast immer. Ich freue mich, wenn wir das noch optimieren können. Den nächsten Stammtisch sollte ich dann auch mal wieder schaffen.

    Viele Grüße
    Hella
    Mitglied des Contao-Stammtisch München
    Aktuelle Termine erfährst Du immer unter www.contao-bayern.de
    Komm' doch mal vorbei!

  30. #30
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.208
    Stammtisch Contao Bayern: http://www.contao-bayern.de

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •