Contao-Camp 2024
Ergebnis 1 bis 10 von 10

Thema: Telefonnummer HTML5 Validierung / Contao Regular Expression [GELÖST]

  1. #1
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard Telefonnummer HTML5 Validierung / Contao Regular Expression [GELÖST]

    Hallo,
    ich habe in einem Formular ein Textfeld als Pflichtfeld mit der Eingabeprüfung "Telefonnummer" eingetragen.
    Die HTML5 Validierung ist aktiviert. Dennoch scheint die Contao eigene Validierung restriktiver zu sein als die HTML5 Validierung für Telefonnummern:

    Lasse ich das Feld leer greift die HTML5 Validierung - Gebe ich ein Sonderzeichen oder Buchstaben ein greift die HTML5 Validierung nicht, stattdessen erscheint eine (Contao)- Fehlermeldung.
    Ich würde gerne das entsprechende Template ( pattern ) anpassen, damit die HTML5 Validierung identisch ist mit der Contao Regexp für Telefonnummern.

    (Auch wenn mit dem aktivierten Contao Script "js_autofocus" an die Fehlermeldung gescrollt wird - hätte ich lieber eine durchgehende HTML5 Validierung Darstellung... )

    Wie/Wo finde ich die Contao RegExp für die Eingabeprüfung "Telefonnummer" ...

    Danke
    Franko

    LÖSUNG:
    Ein neues form_textfield z.B. form_textfield_phone Template anlegen und hier <input> mit pattern="[0-9 \+\(\)\/-]+" erweitern.
    Dieses Template dann für das entsprechende Contao Form Feld mit der Eingabeprüfung "Telefonnumer" setzen.
    Geändert von Franko (19.12.2017 um 10:36 Uhr)
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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

    Standard

    Der Reguläre Ausdruck für phone dürfte in der Klasse Validator (system/modules/core/library/Contao/Validator.php) in der Methode isPhone() stehen.

    Wenn Du einene eigenen rgxp verwenden willst hilft Dir der Hook addCustomRegexp weiter: https://docs.contao.org/books/api/ex...tomRegexp.html
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Der Reguläre Ausdruck für phone dürfte in der Klasse Validator (system/modules/core/library/Contao/Validator.php) in der Methode isPhone() stehen.
    Hi Vielen Dank,
    wie müßte denn jetzt die Regxp im Template aussehen, damit diese identisch ist mit:

    HTML-Code:
    /**
    	 * Valid phone number
    	 *
    	 * @param mixed $varValue The value to be validated
    	 *
    	 * @return boolean True if the value is a valid phone number
    	 */
    	public static function isPhone($varValue)
    	{
    		return preg_match('/^(\+|\()?(\d+[ \+\(\)\/-]*)+$/', $varValue);
    	}
    Also ala <input pattern="HIER DIE CONTAO REGEXP" ....

    Hatte das schon mal in einer 3er für PLZ (https://community.contao.org/de/show...l=1#post359732) aber kriege es mit dieser Regxp nicht so hin ...
    Geändert von Franko (18.12.2017 um 20:10 Uhr)
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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

    Standard

    Ich habe mich mit pattern in html5 <input>s noch nicht beschäftigt ...

    Was passiert denn, wenn Du den RegExp von Contaos isPhone() in <input pattern=""> 1:1 verwendest. Basierend auf evtl. auftretenden Fehlermeldungen könntest Du Dich dann weiter voran arbeiten.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Ich habe mich mit pattern in html5 <input>s noch nicht beschäftigt ...

    Was passiert denn, wenn Du den RegExp von Contaos isPhone() in <input pattern=""> 1:1 verwendest. Basierend auf evtl. auftretenden Fehlermeldungen könntest Du Dich dann weiter voran arbeiten.
    Vielen Dank,
    ich weiß halt nicht wie ich mit dem letzten Part :
    HTML-Code:
    +$/', $varValue
    umgehen muß ...
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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

    Standard

    Zitat Zitat von Franko Beitrag anzeigen
    ich weiß halt nicht wie ich mit dem letzten Part :
    HTML-Code:
    +$/', $varValue
    umgehen muß ...
    Meinst Du mit "letzten Part" das "+$" oder die Übergabe des Parameters $varValue?

    Das + davon bezieht sich auf den zuvor geklammerten Ausdruck, also (\d+[ \+\(\)\/-]*) und bedeutet "einen oder mehrere davon", das abschließende $ bedeutet "Ende der Zeichenkette", also das Gegenstück zum ^ ("Anfang").

    Wenn ich es richtig verstanden habe, beziehen sich die html-pattern-RegExp immer auf den gesamten Wert, d.h. die Anker ^ und $ können im Gegensatz zum PHP RegExp entfallen. (siehe https://developer.mozilla.org/de/doc.../Element/Input : "The pattern must match the entire value, not just some subset.")

    $varValue entfällt bei der HTML-Variante, da klar ist, daß der RegExp sich auf den value des Elements bezieht.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Hallo,
    Super Erklärung - hätte sich mir auch selbst erschließen müssen :-)

    Allerdings - Wenn ich diese regex (\+|\()?(\d+[ \+\(\)\/-]*) hier teste (https://www.regextester.com/) mit z.B:
    +49 (0) 555 / 111 -1
    matched es korrekt.

    Trage ich im form template <input pattern="(\+|\()?(\d+[ \+\(\)\/-]*)" ... ein beanstandet er diese Eingabe ... ?

    Danke
    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

  8. #8
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Hallo,
    ich habe es jetzt mit pattern="[0-9 \+\(\)\/-]+" probiert - Damit scheint es zu funktionieren.

    Die HTML5 Validierung ist dann anlog zur Contao Beschreibung "Erlaubt numerische Zeichen, Plus (+), Minus (-), Schrägstrich (/), Klammern () und Leerzeichen ( )." bzw. Eingabeprüfung für Telefonnummern.

    Danke
    Frank
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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

    Standard

    Zitat Zitat von Franko Beitrag anzeigen
    Hallo,
    ich habe es jetzt mit pattern="[0-9 \+\(\)\/-]+" probiert - Damit scheint es zu funktionieren.
    Damit würdest Du aber z.B. auch +4989+((123-456)) erlauben, was für mich nicht nach einer gültigen Telefonnummer aussieht ;-)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Urgestein Avatar von Franko
    Registriert seit
    22.06.2009.
    Beiträge
    1.503
    Partner-ID
    6122

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Damit würdest Du aber z.B. auch +4989+((123-456)) erlauben, was für mich nicht nach einer gültigen Telefonnummer aussieht ;-)
    Yepp - Im Sinne einer korrekten Reihenfolge wird dies nicht abgefangen.
    Allerdings ist dies auch mit der "internen" Contao Abfrage der Fall. Deaktiviere ich die HTML5 Validierung nimmt er dann auch z.B. die Eingabe +49 +49 231 ...

    Insofern hilft das pattern lediglich zur identischen Validierung - also das nach der "normalen "HTML5 Validierung nicht nochmals die Contao eigene greift.
    Freelancer, Digital Design Enthusiast, Contao Aficionado and Tutorial Junkie @MoinFranko - Carpe diem ...

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
  •