Contao-Camp 2024
Ergebnis 1 bis 10 von 10

Thema: Daten im Backend nach Datum sortieren

  1. #1
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard Daten im Backend nach Datum sortieren

    Guten Abend, ich habe ein kleines Modul für Contao. Das läuft auch alles.
    Nur funktioniert die Sortierung im BACKEND nach DATUM nicht.

    Der Datums DCA field Eintrag sieht so aus:
    Code:
    'date'    => array
            (
                'label'         => &$GLOBALS['TL_LANG']['tl_intranet_eventkalender']['date'],
                'inputType' => 'text',
                'exclude'     => true,
                'sql'            => "varchar(20) NOT NULL DEFAULT ''",
                'filter'         => true
            ),
    Und mein List->Sorting so:
    Code:
    'sorting'           => array
    		(
    			'mode'        => 1,
    			'fields'      => array('date DESC'),
    			'headerFields'=> array('house'),
    			'flag'        => 12,
    			'panelLayout' => 'sort,filter;search,limit',
    		),
    Eingetragen werden die Daten als Deutsches Zeitformat:
    12.5.2022 oder
    12.05.2022
    usw.

    Im Backend werden die Einträge aber nach keinem ersichtlichen System sortiert.
    Kann mir jemand einen Tipp geben?

    Danke vielmals

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

    Standard

    Ich denke, Du solltest flag mit einem Wert von 5, …, 10 verwenden. Das sind die für das sortieren von Datumsangaben. (https://docs.contao.org/dev/referenc...lds/#reference).

    Edit: flag in der Definition des Felds date !
    Geändert von fiedsch (22.03.2022 um 17:42 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Das war vorher auf 7, hat auch nicht funktioniert.
    Und ich möchte ja nicht nur nach Monat bzw. Jahr sortieren, sondern nach Datum aufsteigend bzw. absteigend.
    Aber Contao hat da (nehme ich an) Probleme mit der Formatierung des Datums, weil kein Zeitstempel.

    Aber da gibt es bestimmt eine mögliche Lösung?

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

    Standard

    Kein Timestamp hatte ich übersehen. Sorry.

    Dann sollte als Zeichenkette sortiert werden, was für Datumsangaben meist sinnfrei ist, da damit erst alle 01., dann alle 02. usw. sortiert werden.

    Eine simple Lösung fällt mir spontan nicht ein. Spräche etwas dagegen, die Felddefinition umzustellen und die in der Datenbank bereits vorhandenen Werte zu konvertieren?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  5. #5
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Spricht nichts dagegen. Müsste nur mal schauen, wie ich das Dateumsformat korrekt an die Datenbank übergebe und dann korrekt als Datum im Backend und Frontend ausgebe.
    Wichtig wäre: Der Nutzer muss im Backend ein Datum auswählen / eingeben können.

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

    Standard

    Zitat Zitat von Flaschenzug Beitrag anzeigen
    Wichtig wäre: Der Nutzer muss im Backend ein Datum auswählen / eingeben können.
    Dann spricht ja nichts gegen Timestamps:

    PHP-Code:
     'eval' => [… 'datepicker' => true …
    wie in https://docs.contao.org/dev/referenc...ds/#evaluation beschrieben.

    Edit: also so, wie in tl_member.dateOfBirth https://github.com/contao/contao/blo...ember.php#L154
    Geändert von fiedsch (22.03.2022 um 19:21 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Großartig, Danke fiedsch. Mit dem Beispiel habe ich es super schnell zum Laufen gekriegt.

    Für alle die irgend wann mal ähnliches brauchen:

    Code:
    'sorting'           => array
    		(
    			'mode'        => 1,
    			'fields'      => array('eventdate ASC'),
    			'headerFields'=> array('house'),
    			'flag'        => 12,
    			'panelLayout' => 'sort,filter;search,limit',
    		),
    Code:
    'eventdate'    => array
            (
                'label'         => &$GLOBALS['TL_LANG']['tl_eventkalender']['eventdate'],
                'inputType' => 'text',
                'exclude'     => true,
                'sql'            => "varchar(11) NOT NULL DEFAULT ''",
                'filter'         => true,
                'eval' => array('rgxp'=>'date', 'datepicker'=>true, 'feEditable'=>true, 'feViewable'=>true),
                'flag'            => 6,
            ),
    Geändert von Flaschenzug (22.03.2022 um 21:36 Uhr) Grund: Fehler behoben

  8. #8
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Eine Frage ist jetzt doch noch aufgekommen.

    Im Frontend wird das Datum richig gezeigt.
    Im Backend wird das Datum allerdings als Timestamp angezeigt, nicht als Datum?

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

    Standard

    Für das Backend brauchst Du (glaube ich) noch das 'flag' mit einem für Datumsfelder passenden Wert.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Contao-Fan Avatar von Flaschenzug
    Registriert seit
    08.07.2010.
    Ort
    Berlin
    Beiträge
    312

    Standard

    Hab die Lösung gefunden.
    Code:
    'eventdate'    => array
            (
                'label'         => &$GLOBALS['TL_LANG']['tl_eventkalender']['eventdate'],
                'inputType' => 'text',
                'exclude'     => true,
                'sql'            => "varchar(11) NOT NULL DEFAULT ''",
                'filter'         => true,
                'eval' => array('rgxp'=>'date', 'datepicker'=>true, 'feEditable'=>true, 'feViewable'=>true),
                'flag'            => 6,
            ),
    Die Flag muss da mit rein, ich hatte sie nur im list.sorting

    Danke vielmals für deine super schnelle und präzise Hilfe!
    Geändert von Flaschenzug (22.03.2022 um 21:35 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
  •