Contao-Camp 2024
Ergebnis 1 bis 11 von 11

Thema: Anzeige eines Unix Timestamps als Datum

  1. #1
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    45

    Standard Anzeige eines Unix Timestamps als Datum

    Hallo,

    ich habe einen Tabellenview auf der Datenbank erzeugt und zeige die Daten mit dem Contao Modul Auflistung an. Dabei wird das leicht abgewandelte Standardtemplate verwendet:


    PHP-Code:
    <div class="<?= $this->class ?> ce_table listing block"<?= $this->cssID ?><?php if ($this->style): ?> style="<?= $this->style ?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <<?= $this->hl ?>><?= $this->headline ?></<?= $this->hl ?>>
      <?php endif; ?>

      <?php if ($this->searchable): ?>
        <div class="list_search">
          <form method="get">
            <div class="formbody">
              <input type="hidden" name="order_by" value="<?= $this->order_by ?>">
              <input type="hidden" name="sort" value="<?= $this->sort ?>">
              <input type="hidden" name="per_page" value="<?= $this->per_page ?>">
              <div class="widget widget-select">
                <label for="ctrl_search" class="invisible"><?= $this->fields_label ?></label>
                <select name="search" id="ctrl_search" class="select">
                  <?= $this->search_fields ?>
                </select>
              </div>
              <div class="widget widget-text">
                <label for="ctrl_for" class="invisible"><?= $this->keywords_label ?></label>
                <input type="text" name="for" id="ctrl_for" class="text" value="<?= $this->for ?>">
              </div>
              <div class="widget widget-submit">
                <button type="submit" class="submit"><?= $this->search_label ?></button>
              </div>
            </div>
          </form>
        </div>
      <?php endif; ?>

      <?php if ($this->per_page): ?>
        <div class="list_per_page">
          <form method="get">
            <div class="formbody">
              <input type="hidden" name="order_by" value="<?= $this->order_by ?>">
              <input type="hidden" name="sort" value="<?= $this->sort ?>">
              <input type="hidden" name="search" value="<?= $this->search ?>">
              <input type="hidden" name="for" value="<?= $this->for ?>">
              <div class="widget widget-select">
                <label for="ctrl_per_page" class="invisible"><?= $this->per_page_label ?></label>
                <select name="per_page" id="ctrl_per_page" class="select">
                  <option value="10"<?php if (10 == $this->per_page): ?> selected<?php endif; ?>>10</option>
                  <option value="20"<?php if (20 == $this->per_page): ?> selected<?php endif; ?>>20</option>
                  <option value="30"<?php if (30 == $this->per_page): ?> selected<?php endif; ?>>30</option>
                  <option value="50"<?php if (50 == $this->per_page): ?> selected<?php endif; ?>>50</option>
                  <option value="100"<?php if (100 == $this->per_page): ?> selected<?php endif; ?>>100</option>
                  <option value="250"<?php if (250 == $this->per_page): ?> selected<?php endif; ?>>250</option>
                  <option value="500"<?php if (500 == $this->per_page): ?> selected<?php endif; ?>>500</option>
                </select>
              </div>
              <div class="widget widget-submit">
                <button type="submit" class="submit"><?= $this->per_page_label ?></button>
              </div>
            </div>
          </form>
        </div>
      <?php endif; ?>

      <?php if ($this->searchable && $this->for && empty($this->tbody)): ?>
        <?= $this->no_results ?>
      <?php else: ?>
        <table class="all_records">
        <thead>
          <tr>
           <td><h4>ID</h4></td>
           <td> <h4>Veranstaltung</h4></td>
           <td><h4>Klasse</h4></td>
           <td><h4>Name Hund</h4></td>
           <td><h4>Wurftag</h4></td>
           <td>  </td>
          </tr>
        </thead>
        <tbody>
          <?php foreach ($this->tbody as $class => $row): ?>
            <tr class="<?= $class ?>">
              <?php foreach ($row as $col): ?>
                <td class="body <?= $col['class'?>"><?= $col['content'?></td>
              <?php endforeach; ?>
              <?php if ($this->details && isset($col)): ?>
                <?php if ($col['details']): ?>
                  <td class="body <?= $this->col_last ?> col_last"><a href="<?= $col['url'?>"><?= Contao\Image::getHtml('assets/contao/images/info.svg'?></a></td>
                <?php else: ?>
                  <td class="body <?= $this->col_last ?> col_last">&nbsp;</td>
                <?php endif; ?>
              <?php endif; ?>
            </tr>
          <?php endforeach; ?>
        </tbody>
        </table>
      <?php endif; ?>

      <?= $this->pagination ?>

    </div>
    Das Ergebnis seht Ihr hier: https://cms4.rttonline.de/Portal/testliste-2.html

    Jetzt möchte ich, dass die Spalte Wurftag als Datum dd.MM.jjjj angezeigt wird. Der angezeigte Wert ist ein Unix Timestamp. Wie kann ich das erzeugen?

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Das Auflistungsmodul von Contao formatiert dir Datumsangaben eigentlich bereits automatisch - vorausgesetzt das entsprechende Tabellenfeld ist als Contao DCA und entsprechend als Datumsfeld angelegt.

  3. #3
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

  4. #4
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    45

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das Auflistungsmodul von Contao formatiert dir Datumsangaben eigentlich bereits automatisch - vorausgesetzt das entsprechende Tabellenfeld ist als Contao DCA und entsprechend als Datumsfeld angelegt.
    Prima, ich habe gelesen, dass ich dafür folgendes tun muss:

    1. Verzeichnis "app/Resources/contao/dca" anlegen, wenn es noch nicht existiert.

    2. Anlage einer Datei mit dem Namen "tabelle.php".

    3.

    Wie muss nun die Datei aussehen für a)

    Vorgabe des Formats der Spalte "feld" als Datum tt.mm.jjjj und b) Vorgaben von Überschriften zur Spalte "feld"?

    4. Cache leeren...

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.879
    Partner-ID
    10107

    Standard

    Zitat Zitat von gfassben Beitrag anzeigen
    Prima, ich habe gelesen, dass ich dafür folgendes tun muss:

    1. Verzeichnis "app/Resources/contao/dca" anlegen, wenn es noch nicht existiert.

    2. Anlage einer Datei mit dem Namen "tabelle.php".

    3.

    Wie muss nun die Datei aussehen für a)

    Vorgabe des Formats der Spalte "feld" als Datum tt.mm.jjjj und b) Vorgaben von Überschriften zur Spalte "feld"?

    4. Cache leeren...
    Achso, du hast gar kein DCA dafür. Dann ist es vermutlich leichter wenn du das Datum direkt in der Ausgabe formatierst.

  7. #7
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    45

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Achso, du hast gar kein DCA dafür. Dann ist es vermutlich leichter wenn du das Datum direkt in der Ausgabe formatierst.
    Nein ich versuche so weit wie möglich mit dem "Standard" auszukommen. Wie kann ich das im Template machen?

  8. #8
    Contao-Nutzer Avatar von Tastaturberuf
    Registriert seit
    14.03.2011.
    Ort
    Berlin
    Beiträge
    197
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    \Contao\Date::parse(\Contao\Date::getNumericDateFormat(), $tstamp);
    \
    Contao\Date::parse(\Contao\Date::getNumericDatimFormat(), $tstamp); 
    Der Vorteil der Contao-Methoden gegenüber der date()-Funktion ist, dass er sich das Zeitformat von der jeweiligen Root-Seite holt.
    Geändert von Tastaturberuf (21.01.2021 um 12:15 Uhr) Grund: Code korrigiert.
    Tastaturberuf | Code with ♥ and Contao.

  9. #9
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    45

    Standard

    Zitat Zitat von Tastaturberuf Beitrag anzeigen
    PHP-Code:
    \Contao\Date::parse(\Contao\Date::getNumericDateFormat(), $tstamp);
    \
    Contao\Date::parse(\Contao\Date::getNumericDatimFormat(), $tstamp); 
    Der Vorteil der Contao-Methoden gegenüber der date()-Funktion ist, dass er sich das Zeitformat von der jeweiligen Root-Seite holt.
    Super, leider habe ich bei der Umsetzung in das Template "zwei linke Hände". Wo im Template baue ich das wie ein?

    Über
    PHP-Code:
    <?= $this->showTemplateVars() ?>
    habe ich die Templatevariablen sichtbar gemacht. Das sieht man beim Aufruf der Seite https://cms4.rttonline.de/Portal/testliste-2.html Das Template selbst ist im Thema beschrieben.

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

    Standard

    In Deinem Output finde ich (z.B.)

    Code:
    "row_0 row_first even" => array:6 [
              "id" => array:7 [
                "raw" => "6"
                "content" => "6"
                "class" => "col_0 col_first"
                "id" => "6"
                "field" => "id"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
              "Veranstaltung" => array:7 [
                "raw" => "RTT Workingtest 2020"
                "content" => "RTT Workingtest 2020"
                "class" => "col_1"
                "id" => "6"
                "field" => "Veranstaltung"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
              "Datum" => array:7 [
                "raw" => "1590789600"
                "content" => "1590789600"
                "class" => "col_2"
                "id" => "6"
                "field" => "Datum"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
              "Klasse" => array:7 [
                "raw" => "Fortgeschrittene"
                "content" => "Fortgeschrittene"
                "class" => "col_3"
                "id" => "6"
                "field" => "Klasse"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
              "Name" => array:7 [
                "raw" => "Skadi"
                "content" => "Skadi"
                "class" => "col_4"
                "id" => "6"
                "field" => "Name"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
              "Wurftag" => array:7 [
                "raw" => "19.01.2018"
                "content" => "19.01.2018"
                "class" => "col_5"
                "id" => "6"
                "field" => "Wurftag"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
            ]
    und darin dann die zwei Datumsangaben

    Code:
              "Datum" => array:7 [
                "raw" => "1590789600"
                "content" => "1590789600"
                "class" => "col_2"
                "id" => "6"
                "field" => "Datum"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
    
              "Wurftag" => array:7 [
                "raw" => "19.01.2018"
                "content" => "19.01.2018"
                "class" => "col_5"
                "id" => "6"
                "field" => "Wurftag"
                "url" => "Portal/testliste-2.html?show=6"
                "details" => 1
              ]
            ]
    Der von Dir angesprochene "Wurftag" scheint ja bereits passend formatiert sein.

    Den Code von @Tastaturberuf aus #8 baust Du für die gewünschte(n) Spalten, indem Du in Deiner Schleife über alle Spalten jeder Zeile (<?php foreach ($row as $col): ?>) z.B. prüfst, ob $col['field'] gleich "Datum" ist und dann den Wert ($col['content']) nicht direkt ausgibst, sondern als \Contao\Date::parse(\Contao\Date::getNumericDateFo rmat(), $col['content']).
    Geändert von Spooky (21.01.2021 um 18:18 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  11. #11
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    45

    Standard

    Danke für die Info, ich werde es mal versuchen.

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
  •