Ergebnis 1 bis 6 von 6

Thema: Eigene Eingabeprüfung

  1. #1
    Contao-Fan Avatar von Stranger
    Registriert seit
    20.06.2009.
    Ort
    Blankenburg
    Beiträge
    746
    Partner-ID
    5635
    User beschenken
    Wunschliste

    Standard Eigene Eingabeprüfung

    Ich möchte bei einem Textfeld eine individuelle Eingabeprüfung einsetzen. Beipiel: Er soll überprüfen, ob der Feldwert von Name == "Hans" ist.
    Gibts da irgendeine Möglichkeit es zu tun? Notfalls mit Templateanpassung?
    Du willst dich bei mir bedanken?
    Ich freue mich über Geschenke von meiner Amazon-Wunschliste.

    Contao-Anwender seit 2008
    Contao-Entwickler seit 2013, mehr als 50 Contao Erweiterungen programmiert

    Mein Unternehmen aus Blankenburg (Harz): Fast & Media

  2. #2
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Stranger,

    eigene Eingabeprüfungen für Formularfelder kannst Du in TYPOlight per Hook 'addCustomRegexp' integrieren.

    Kurz mit konkretem Beispiel erläutert:
    a) damit die Eingabeprüfung im Formulargenerator im DropDown 'Eingabeprüfung' erscheint, entweder in der system/config/dcaconfig.php oder in einem eigenen Modul-Verzeichnis in einer Datei config.php die folgende Zeile:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_form_field']['fields']['rgxp']['options'][] = 'myCustomRegexp'
    b) zur Registrierung Deiner callback-Funktion weiterhin die Zeile
    PHP-Code:
    $GLOBALS['TL_HOOKS']['addCustomRegexp'][] = array('MyRegexps''checkName'); 
    c) in einem eigenen Modul-Verzeichnis legst Du eine Klasse mit der Prüfung an, z.B. Datei 'MyRegexps.php':
    PHP-Code:
    <?php
    class MyRegexps extends Backend
    {
        
    /**
         * eigene Eingabepruefung fuer Formularfeld per Hook 'addCustomRegexp'
         */
        
    public function checkName($strRegexp$varValueWidget $objWidget)
        {
            if (
    $strRegexp == 'myCustomRegexp')
            {
                if (
    $varValue != 'Hans')
                {
                    
    $objWidget->addError('Feld ' $objWidget->label ' akzeptiert nur "Hans".');
                }

                return 
    true;
            }

            return 
    false;
        }

    }

    Hoffe, das hilft Dir weiter.

    Schöne Grüße
    Thomas

  3. #3
    Contao-Fan Avatar von Stranger
    Registriert seit
    20.06.2009.
    Ort
    Blankenburg
    Beiträge
    746
    Partner-ID
    5635
    User beschenken
    Wunschliste

    Standard

    Vielen Dank, das hat mir sehr weitergeholfen! Schade ist allerdings, dass eben nicht im Backend einzusätzliches Eingabefeld auftaucht in welchem man den individuellen Wert hineinschreibt. Übrigens taucht noch ein Fehler auf: Im Backend in der Select-Liste taucht der neue Wert jetzt 3 mal auf. Woran liegt das?
    Du willst dich bei mir bedanken?
    Ich freue mich über Geschenke von meiner Amazon-Wunschliste.

    Contao-Anwender seit 2008
    Contao-Entwickler seit 2013, mehr als 50 Contao Erweiterungen programmiert

    Mein Unternehmen aus Blankenburg (Harz): Fast & Media

  4. #4
    Contao-Fan Avatar von tom
    Registriert seit
    16.06.2009.
    Ort
    Ludwigsburg
    Beiträge
    385

    Standard

    Hallo Stranger,

    Übrigens taucht noch ein Fehler auf: Im Backend in der Select-Liste taucht der neue Wert jetzt 3 mal auf. Woran liegt das?
    da habe ich im Beispiel etwas "gepfuscht" (obwohl der Eintrag bei mir dennoch nur einmal auftaucht).
    Du hast die Zeile in der dcaconfig.php eingetragen?

    Es kann sein, dass diese Datei mehrfach "geladen" wird, und somit jedesmal die zusätzliche Option ergänzt wird.

    Der Eintrag sollte daher besser lauten:
    PHP-Code:
    if (!is_array($GLOBALS['TL_DCA']['tl_form_field']['fields']['rgxp']['options']) 
        || !
    in_array('myCustomRegexp'$GLOBALS['TL_DCA']['tl_form_field']['fields']['rgxp']['options']))
    {
        
    $GLOBALS['TL_DCA']['tl_form_field']['fields']['rgxp']['options'][] = 'myCustomRegexp';

    Schade ist allerdings, dass eben nicht im Backend ein zusätzliches Eingabefeld auftaucht in welchem man den individuellen Wert hineinschreibt
    danach hattest Du bisher auch nicht gefragt, läßt sich auch ergänzen, aber dann würde das hier schon zu nem "Widget-Tutorial". Mal sehen, vielleicht am Wochenende....

    Auf die Schnelle, wenn Du unterschiedliche Werte in unterschiedlichen Feldern zulassen möchtest, könntest Du die auch innerhalb Deiner Funktion hinterlegen (nicht getestet) :

    PHP-Code:
    <?php
    class MyRegexps extends Backend
    {
        
    /**
         * eigene Eingabepruefung fuer Formularfeld per Hook 'addCustomRegexp'
         */
        
    public function checkName($strRegexp$varValueWidget $objWidget)
        {
            if (
    $strRegexp == 'myCustomRegexp')
            {
              
               
    // Array mit den erlaubten Werten, z.B. als Schüssel die ID des Formularfelds
               
    $arrAllowed = array(
                    
    23 => "Hans",
                    
    => "der erlaubte Wert"
               
    );

               if (
    strlen($arrAllowed[$objWidget->id]))
               {
                          if (
    $varValue != $arrAllowed[$objWidget->id])
                           {
                               
    $objWidget->addError('Feld ' $objWidget->label ' akzeptiert nur "' $arrAllowed[$objWidget->id].'".');
                           }

                           return 
    true;
               }
            }

            return 
    false;
        }

    }
    (In der Fehlermeldung den erlaubten Wert anzuzeigen ist sicher nicht sinnvoll, ist nur als Beispiel, wie die zugehörige Fehlermeldung erzeugt wird)

    Hoffe, hilft wieder ein Stück weiter,
    Schöne Grüße
    Thomas
    Geändert von tom (03.07.2009 um 17:55 Uhr)

  5. #5
    Contao-Nutzer Avatar von TheGeek
    Registriert seit
    21.06.2009.
    Beiträge
    97

    Standard

    Ist es möglich die Eingabeprüfung auch im Feldtyp SelectMenü ein zu blenden? Der User wählt aus verschiedenen Tagen (Select Optionen) aus und wenn er den heutigen wählt soll zb eine Meldung ausgegeben werden...
    Life would be easier if I had the source code!

  6. #6
    Contao-Nutzer
    Registriert seit
    06.08.2010.
    Beiträge
    104

    Standard

    Moin,

    tschuldigung, wenn ich den Thread hier recycle aber ich glaube hier könnte die Lösung für ein ziemlich dringendes Problem von mir liegen.

    Ich habe in diesem Thread schon erreicht, mir ein eigenes Feld in der Registrierung anzulegen. Zwar gibt es noch ein Problem, weil die Datenbank scheinbar nicht aktualisiert wird - könnte an einem veralteten Tutorial liegen - aber was jetzt noch fehlt, ist, dass ich im Backend in dem Registrierungs-Modul ein Eingabefeld benötige, in das der Kunde ein Kennwort eingeben kann. Dieses Kennwort ist Bedingung für eine erfolgreiche Benutzerregistrierung. Wie schaffe ich es nun, eine Eingabeprüfung hinzuzufügen?

    Anbei nochmal meine Arbeitsdateien
    wfcode.zip

    Ich wäre über eine rettende Idee unendlich dankbar!

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 19.01.2011, 12:02
  2. Eigene Gestaltung
    Von enzian im Forum Was kann Contao?
    Antworten: 5
    Letzter Beitrag: 10.09.2010, 13:24
  3. eigene 404 Seiten
    Von Enra im Forum Sonstiges zu Contao
    Antworten: 5
    Letzter Beitrag: 28.12.2009, 14:55
  4. Eingabeprüfung auf URL
    Von Stranger im Forum Sonstiges zu Contao
    Antworten: 3
    Letzter Beitrag: 20.10.2009, 12:41

Lesezeichen

Lesezeichen

Berechtigungen

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