Ergebnis 1 bis 4 von 4

Thema: Datumseingabe anderes formatieren, globale Date parse Funktion und Ausgabe belassen

  1. #1
    Contao-Fan Avatar von Dani
    Registriert seit
    19.06.2009.
    Ort
    Meilen, Schweiz
    Beiträge
    552

    Standard Datumseingabe anderes formatieren, globale Date parse Funktion und Ausgabe belassen

    Hallo zusammen

    Ich habe ein Text-Feld:

    PHP-Code:
                    'inputType'               => 'text',
                    
    'eval'                    => array('rgxp'=>'date''doNotCopy'=>true'datepicker'=>true'style'=>'width: 220px;'),
                    
    'sql'                     => "int(10) unsigned NULL" 
    Wenn ich nun ein Datum eingeben möchte, muss ich das im Format "dd.mm.YYYY" tun, da es so in den globalen Einstellungen eingestellt ist. Die globalen Einstellungen möchte ich in diesem Format wegen der Ausgabe so belassen. Ich weiss, ich kann die Ausgabe im Template anders definieren, möchte ich aber nicht, da ich so jedes Template anpassen müsste.

    Nun meine Frage: Ist es irgendwie möglich nur für die Eingabe den Parse-String anzupassen. Ich möchte es schlussendlich gerne im Format "dd.mm.yy" haben. Herzlichen Dank für die Antworten!

  2. #2
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Würde mich auch interessieren.

    Find es bisll arg blöd das man das Datum (auch im Frontend) so eingeben muss wie in den Einstellungen, viele Leute schrieben uns an ds sie das Formular net abschicken können da sie statt 11.11.1111 es so eingeben 1.1.11

  3. #3
    Contao-Nutzer
    Registriert seit
    06.03.2010.
    Ort
    München
    Beiträge
    16

    Standard

    Zitat Zitat von Dani Beitrag anzeigen
    Hallo zusammen

    Ich habe ein Text-Feld:

    PHP-Code:
                    'inputType'               => 'text',
                    
    'eval'                    => array('rgxp'=>'date''doNotCopy'=>true'datepicker'=>true'style'=>'width: 220px;'),
                    
    'sql'                     => "int(10) unsigned NULL" 
    Wenn ich nun ein Datum eingeben möchte, muss ich das im Format "dd.mm.YYYY" tun, da es so in den globalen Einstellungen eingestellt ist. Die globalen Einstellungen möchte ich in diesem Format wegen der Ausgabe so belassen. Ich weiss, ich kann die Ausgabe im Template anders definieren, möchte ich aber nicht, da ich so jedes Template anpassen müsste.

    Nun meine Frage: Ist es irgendwie möglich nur für die Eingabe den Parse-String anzupassen. Ich möchte es schlussendlich gerne im Format "dd.mm.yy" haben. Herzlichen Dank für die Antworten!

    Für's BE kannst Du das eventuell mit einem load_callback und einem save_callback für dieses Feld lösen.
    Dazu musst Du das 'rgxp'=>'date' rausschmeißen, das kommt Dir sonst in die Quere. Allerdings wird dann das Datum nicht als Timestamp gespeichert, das musst Du im save_callback dann selber übernehmen.

    Im save_callback könntest Du so vorgehen:

    - Prüfen, ob der Datumsstring korrekt ist (also ob er Deinen Anforderungen entspricht). Auf alle Fälle sollte das im BE eingestellte Format auch als korrekt angesehen werden)
    - Wenn nicht, Exception mit Fehlermeldung
    - Aus dem Datumsstring einen Timestamp machen.
    - Und den Timestamp dann zurückgeben.

    Da kann man in allerlei Probleme geraten - also in der Art, daß das Format irgendwann im BE umgestellt wird und Deine Callback-Methode dann nicht mehr geht. Muß man abwägen, wie flexibel man die schreibt.

    Im load_callback solltest Du dann den Timestamp wieder in das Format bringen, das angezeigt werden soll - also am besten das, das im BE eingestellt ist. Das würde ich schon alleine wegen dem Datepicker als "Basisformat" beibehalten - aber das hast Du ja eh' so vor.
    (D. h. wenn jemand "1.1.2014" eingibt steht nach dem Speichern "01.01.2014" in dem Feld).

    Weiß nicht, ob das die beste Lösung ist, aber sicher einfacher als ein Widget zu schreiben oder einen submit_callback. Ich habe das nicht ausprobiert, man müsste es eh' testen, ob da alles bedacht ist. Da man dafür eigene Methoden schreiben muß, stellt sich halt die Frage ob sich das rentiert.

    Hoffe das hilft Dir, aber vielleicht weiß noch jemand eine einfachere Lösung.

  4. #4
    Contao-Nutzer
    Registriert seit
    06.03.2010.
    Ort
    München
    Beiträge
    16

    Standard

    Zitat Zitat von Ralf2011 Beitrag anzeigen
    Würde mich auch interessieren.

    Find es bisll arg blöd das man das Datum (auch im Frontend) so eingeben muss wie in den Einstellungen, viele Leute schrieben uns an ds sie das Formular net abschicken können da sie statt 11.11.1111 es so eingeben 1.1.11

    Ich glaube, da kommt man auch nicht um eigenen Code herum.
    Am besten vielleicht mit dem validateFormField-Hook... https://contao.org/de/manual/3.1/cus...idateformfield

    Mit diesem Hook bekommt man das bestimmt hin (im Formulargenerator muß die eingestellte Validierung dafür rausgenommen werden), aber es ist leider mit Programmierung verbunden.

    Vielleicht weiß noch jemand eine Extension - oder kennt irgendeine Einstellung die das löst.

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
  •