Ergebnis 1 bis 7 von 7

Thema: eval anpassen?

  1. #1
    Contao-Nutzer
    Registriert seit
    17.07.2011.
    Beiträge
    27

    Standard eval anpassen?

    Hallo zusammen,
    ich bastel gerade an einem Backendmodul, in dessen Felder ich nter anderem eine Startzeit und eine Endzeit eintragen möchte.
    Ich habe folgende Felddefinition:
    PHP-Code:
     'von' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_dienst']['von'],
                
    'exclude'                 => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'rgxp'=>time,'tl_class'=>'w50 wizard'),
                
    'sql'                     => "time"
            
    ),
    'bis' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_dienst']['bis'],
                
    'exclude'                 => true,
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'rgxp'=>time,'tl_class'=>'w50 wizard'),
                
    'sql'                     => "time"
            
    ), 
    Jetzt habe ich hier ein Problem:
    1.
    "rgxp=>time" prüft auf eine 5 stellige Eingabe, was mir auch reicht, aber MySql erwartet einen 8stelligen Wert.
    Kann ich hier für das Feld eine eigene Prüfung einbauen?
    Wie macht man sowas?
    Fragt und grüßt

    Osswood

  2. #2
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin,

    hmm, am besten du postest mal deine DB Config (database.sql).

    Da kann man möglicherweise was erkennen.

    Was der Eintrag
    PHP-Code:
    'sql' => "time" 
    bewirken soll, ist mir allerdings nicht klar.

    Grüße, Cliff

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    @cliffen:
    Das ist eine SQL Angabe in der DCA statt in der database.sql, in Contao 3 möglich.

    @osswood:
    mysql will 8 stellen, da es auch die sekunden will. time als Feldtyp ist aber unüblich für Contao.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer
    Registriert seit
    17.07.2011.
    Beiträge
    27

    Standard

    Hi,
    ich könnte ja sowas machen:
    PHP-Code:
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>8'rgxp'=>time,'tl_class'=>'w50 wizard'),
                
    'sql'                     => "varchar(8) NOT NULL default ''00:00:00" 
    Dann fehlt mir aber immer noch die Möglichkeit die Einagbe zu überprüfen.
    Oder kann ich da über einen save_callback noch eine Prüfung reindrehen (bin da leider noch etwas 'unbedarft' ;-)).

    gruß
    osswood

  5. #5
    Contao-Fan Avatar von joe
    Registriert seit
    20.06.2009.
    Ort
    Lüneburg
    Beiträge
    687
    User beschenken
    Wunschliste

    Standard

    Du überprüfst sie doch schon mit:

    PHP-Code:
    rgxp'=>time 
    Du kannst dir auch eigene Prüfungen mit dem addCustomRegexp Hook hinzufügen.

    Hier findest du mehr dazu:

    http://contao.org/de/hooks.html#addCustomRegexp

    vg Joe
    Trainings und Coachings zur Fort und Weiterbildung sowie Beratung in den Bereichen Contao, JavaScript, jQuery, VueJS, React, PHP, NodeJS und vielen weiteren Themen.

    Mehr unter jgreg.dev

    Follow me on Twitter @JoeRayGregory

  6. #6
    Contao-Nutzer
    Registriert seit
    17.07.2011.
    Beiträge
    27

    Standard

    @joe
    Ja ich prüfe das mit 'time', aber der lässt halt nur 5 Stellen zu, kann also nicht klappen, wenn die DB 8 haben wiil. Da wird dann nur Mist weggeschrieben.
    Das mit dem Hook ist aber ein großartige Idee, das lässt sich ggf. ja auch weiter aufbohren, um weitere Felder zu verifizieren.
    Danke für den Tip! (Ich bin halt noch nicht so tief in der Contao-Logik )

    Gruß
    Osswood

  7. #7
    Contao-Nutzer
    Registriert seit
    17.07.2011.
    Beiträge
    27

    Standard

    und falls jemand ma sowas braucht, um Zeitangaben zu validieren:
    PHP-Code:
       public function myAddCustomRegexp($strRegexp$varValueWidget $objWidget)
        {
            if (
    $strRegexp == 'time2')
            {
                if (!
    preg_match('/([01]?\d|2[0-3]):([01][0-9]|2[0-3])\:([0-5][0-9])/'$varValue))
                {
                    
    $objWidget->addError('Field ' $objWidget->label ' should be a time format like 00:00:00.');
                }

                return 
    true;
            }
     
        return 
    false;
        } 

    für 'rgxp'=>'time2' und fertig.
    Funktioniert bestens.
    Nochmal Danke und Gruß


    Edit.
    War ein kleiner fehler in der Regexp
    Osswood
    Geändert von osswood (24.09.2012 um 17:00 Uhr)

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
  •