Ergebnis 1 bis 7 von 7

Thema: Inhalte einer Auflistung zeigt gleiche Ausgabe

  1. #1
    Contao-Nutzer
    Registriert seit
    10.08.2014.
    Beiträge
    68

    Standard Inhalte einer Auflistung zeigt gleiche Ausgabe

    Hallo Zusammen,

    ich verwende das Modul Auflistung und habe mir das Template wie folgt angepasst.

    Nun möchte ich prüfen ob ein Feld Inhalt enthält und wenn Ja den Wert mit Icon ausgeben, andernfalls soll Text ausgeben werden.
    In meiner Auflistung erhalten aber alle Datensätze die gleiche Ausgabe, auch wenn das Feld für den jeweiligen Datensatz keinen Inhalt hat wird das Icon ausgegeben.

    Wo liegt mein Denkfehler und wie kann ich diesen beheben?

    Code:
      <?php foreach ($this->tbody as $class=>$row): ?>
        <li class="<?= $class ?>">
          <div class=""><?php echo $row['lastname']['content']; ?>, <?php echo $row['firstname']['content']; ?></div>
          <div class="">
            <?php if (empty($row['mobile']['content'])): ?>Keine Mobilnummer borhanden.<?php else: ?><i class="fa fa-phone" aria-hidden="true"></i> <?php echo $row['mobile']['content']; ?><?php endif; ?>
          </div>
        </li>
      <?php endforeach; ?>
    Besten Dank
    Jörg

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

    Standard

    [QUOTE=TheRedTiger;459828]auch wenn das Feld für den jeweiligen Datensatz keinen Inhalt hat wird das Icon ausgegeben.[/CODE]

    Dann wird das Feld wohl nicht empty() sein. Es könnte ja z.B. &nbsp; enthalten.

    Ich würde mir anschauen, was in den Feldern steht, die das Template zur Ausgabe bekommt. In etwa so:

    PHP-Code:
     <?php foreach ($this->tbody as $class=>$row): ?>
        <li class="<?= $class ?>">
          <div class=""><?php echo $row['lastname']['content']; ?><?php echo $row['firstname']['content']; ?></div>
          <div class="">
            <?php if (empty($row['mobile']['content'])): ?>
               Keine Mobilnummer borhanden.
            <?php else: ?>
               <i class="fa fa-phone" aria-hidden="true"></i> <?php echo $row['mobile']['content']; ?>
            <?php endif; ?>
            <pre>
               <?php var_dump($row); ?>
            </pre>
          </div>
        </li>
      <?php endforeach; ?>
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Nutzer
    Registriert seit
    10.08.2014.
    Beiträge
    68

    Standard

    Hallo Zusammen,

    folgende Ausgabe erhalte ich mit var_dump.

    Code:
                       array(4) {
      ["lastname"]=>
      array(7) {
        ["raw"]=>
        string(8) "Dietrich"
        ["content"]=>
        string(8) "Dietrich"
        ["class"]=>
        string(15) "col_0 col_first"
        ["id"]=>
        string(1) "3"
        ["field"]=>
        string(8) "lastname"
        ["url"]=>
        string(39) "index.php/unser-unternehmen.html?show=3"
        ["details"]=>
        int(1)
      }
      ["firstname"]=>
      array(7) {
        ["raw"]=>
        string(5) "Jörg"
        ["content"]=>
        string(5) "Jörg"
        ["class"]=>
        string(5) "col_1"
        ["id"]=>
        string(1) "3"
        ["field"]=>
        string(9) "firstname"
        ["url"]=>
        string(39) "index.php/unser-unternehmen.html?show=3"
        ["details"]=>
        int(1)
      }
      ["phone"]=>
      array(7) {
        ["raw"]=>
        string(0) ""
        ["content"]=>
        string(6) " "
        ["class"]=>
        string(5) "col_2"
        ["id"]=>
        string(1) "3"
        ["field"]=>
        string(5) "phone"
        ["url"]=>
        string(39) "index.php/unser-unternehmen.html?show=3"
        ["details"]=>
        int(1)
      }
      ["mobile"]=>
      array(7) {
        ["raw"]=>
        string(0) ""
        ["content"]=>
        string(6) " "
        ["class"]=>
        string(14) "col_3 col_last"
        ["id"]=>
        string(1) "3"
        ["field"]=>
        string(6) "mobile"
        ["url"]=>
        string(39) "index.php/unser-unternehmen.html?show=3"
        ["details"]=>
        int(1)
      }
    }
    Das hilft mir aber nicht wirklich.
    Was müsste ich in meinem php ändern?

    Beste Grüße
    Jörg

  4. #4
    Contao-Nutzer
    Registriert seit
    10.08.2014.
    Beiträge
    68

    Standard

    Okay, wenn ich ['content'] durch ['raw'] ersetze funktioniert es.

    Was genau ist ['raw']?

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

    Standard

    an

    Code:
     array(7) {
        ["raw"]=>
        string(0) ""
        ["content"]=>
        string(6) " "
    siehst Du, warum Dein empty() nicht so funktioniert hat, wie Du es wolltest.

    Ich weiß nicht, warum in content ein " " steht, in raw jedoch nicht.

    raw ist der rohe, unformatierte/unbehandelte/... Wert. Ich würde aber jetzt nicht einfach auf raw zugreifen, "weil es dann funktioniert" sondern meine Programmlogik so ändern, daß sie das ausdrückt, was ich haben will.

    Also z.B. if (empty(trim(...)) falls der " " Wert auch wirklich ein Leerzeichen ist und nicht (z.B.) ein &nbsp; -- was man aber natürlich nur sieht, wenn man den erzeugten Quelltext anschaut ...


    Edit: es ist ein &nbsp; siehe https://github.com/contao/core/blob/....php#L312-L317
    Geändert von fiedsch (21.12.2017 um 04:56 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Nutzer
    Registriert seit
    10.08.2014.
    Beiträge
    68

    Standard

    Das konnte ich jetzt auch im Seitenquelltext nachvollziehen.
    Mir ist aber noch nicht klar, wie ich mit dem &nbsp; bei der Inhaltsprüfung umgehen soll??

    Beste Grüße
    Jörg

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

    Standard

    PHP-Code:
      <?php if ($row['mobile']['content'] !== '&nbsp;'): ?>
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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
  •