Ergebnis 1 bis 20 von 20

Thema: [Auflistung Formular-Daten] Leere Felder nicht ausgeben

  1. #1
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard [Auflistung Formular-Daten] Leere Felder nicht ausgeben

    Hallo zusammen,

    in meinem Formular (erstellt mit dem EFG, Daten gespeichert) lasse ich diverse Freitextfelder abfragen. Nicht alle Felder sind Pflicht, so bleiben auch einige leer. Im Frontend werden jetzt leider auch die leeren Felder ausgegeben. Ich konnte weder in den Moduleinstellungen noch im Formular selbst eine Option finden wie "leere Felder ausblenden". Hab ich Tomaten auf den Augen oder ist das doch etwas tricky?


    Viele Grüße,
    jschma

  2. #2
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    du hast recht, ist mir jetzt auch aufgefallen, alle Felder werden standardmässig angezeigt.
    Da müsste man in der Schleifr ein Abfrage machen, dass nur Felder angezeigt werden, die >= 1 Zeichen beinhalten.

  3. #3
    Alter Contao-Hase
    Registriert seit
    06.07.2009.
    Beiträge
    1.493

    Standard

    Alternative bleibt das ausblenden via css.

  4. #4
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard

    Zitat Zitat von Acta Beitrag anzeigen
    Alternative bleibt das ausblenden via css.
    Das funktioniert hier leider nicht, da alles in einem DIV liegt und das Feld keine eigene Klasse bekommt:

    <div class="field field_10">
    Phone:&nbsp;
    +00 000000
    </div>

  5. #5
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Ne, das kann man im Template abfragen!

    Ich werde diesen Beitrag gleich noch editieren, die Regierung hat *ESSEN* geschrien.
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  6. #6
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard

    Zitat Zitat von Thomas Beitrag anzeigen
    Ne, das kann man im Template abfragen!

    Ich werde diesen Beitrag gleich noch editieren, die Regierung hat *ESSEN* geschrien.
    Oh, dann mal guten Hunger Danke für dein Feedback

  7. #7
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    So, mal sehen ob ich das aus dem Stand jetzt so hin bekomme!

    Zunächst einmal kannst Du Dir mit:
    Code:
    <pre><?php $this->showTemplateVars(); ?></pre>
    alle zur Verfügung stehenden Variablen und Felder usw. anzeigen lassen.
    Etwas unübersichtlich, aber man kommt mit der Zeit zurecht.

    Bitte nur in gesicherten Bereichen oder aber in der Entwicklungsumgebung verwenden.
    Je nachdem wo Du die Variablen ausgeben lässt sind auch Systemdaten dabei, die Dir die Logindaten für MYSQL usw. ausgeben. Also VORSICHT damit.


    Du kannst $field['content'] auf Inhalt prüfen und dann entsprechend reagieren:
    Code:
    <?php if ($field['content'] = ""): ?> <-- leer oder nicht, wenn leer mache irgendwas
    ...
    mache irgendwas
    ...
    <?php endif; ?>
    oder sowas
    Code:
    <?php if ($this->$field['label'] && $field['content'] == ""): ?> <-- wenn Label gesetzt und Content leer dann mache irgendwas
    ...
    mache irgendwas
    ...
    <?php endif; ?>
    Du musst Dir nur die richtige Stelle in den Schleifen suchen oder es etwas umschreiben.

    Ein schönes Beispiel wie man Variablen aufrufen und einbinden kann, findest Du auch zwischen Zeile 99 und 103.
    Dort werden die Inhalte zum Teil einzeln eingefügt.

    Ich hoffe Du kommst damit zunächst zurecht.
    Ansonsten schreibe mir mal kurz, wie die Liste aussehen soll und wie sie aufgebaut sein soll, vielleicht kann ich da später etwas stricken.
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  8. #8
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard

    das schaut doch super aus ich probier es zunächst selbst und melde mich ggf nochmals bei dir.

    danke und grüße,
    jschma

  9. #9
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard

    Hmm ne irgendwie bekomm ich es doch nicht hin, trotz deiner kleinen Anleitung

    Eigentlich ist es ganz einfach (in der Theorie). "Wenn kein Inhalt im Feld vorhanden - dann nicht anzeigen".

    Evtl. findest Du ja doch kurz die Zeit um das zu stricken...

    Viele Grüße und danke für deine Hilfestellung,
    Jan

  10. #10
    Contao-Urgestein Avatar von Thomas
    Registriert seit
    16.08.2009.
    Ort
    Visselhövede
    Beiträge
    1.947
    User beschenken
    Wunschliste

    Standard

    Wie soll das denn aufgebaut sein?

    Als Tabelle mit Überschriftenheader, z.B. wie mit der Tabellenversion, nur mit DIVs, oder aber das die Daten untereinander angezeigt werden?

    Für ersteres habe ich sogar ein Template parat, das Andere müsste ich noch erstellen.

    Interessant wäre vielleicht noch, welche Inhalte dort erscheinen sollen, Labels reichen mir da.
    Dann kann ich das kurz nachbauen und muss nicht in den blauen Dunst basteln.
    Kurz ist gut, dauert dann schon etwas und könnte heute Abend erst etwas werden.
    Gruß Thomas
    "Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du." Mahatma Gandhi

  11. #11
    Contao-Fan Avatar von jschma
    Registriert seit
    09.09.2010.
    Beiträge
    408

    Standard

    OK super danke für deine Hilfe! Ich schicke dir es kurz per PN zu...

  12. #12
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    wo baue ich denn
    <?php $this->showTemplateVars(); ?>
    ein, damit die Variablen angezeigt werden.
    Einfach irgendwo in der Artikelseite als HTML Code oder in dem Seitenlayout?

    Gruß

    aadursun

  13. #13
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von aadursun Beitrag anzeigen
    wo baue ich denn ein, damit die Variablen angezeigt werden.
    Einfach irgendwo in der Artikelseite als HTML Code oder in dem Seitenlayout?
    Das müsstest Du im betreffenden Template einfügen.
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  14. #14
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    Ich habe es unter Templates eingefügt, aber in der betreffenden Seite wurden die Variablen nicht angezeigt.

  15. #15
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard

    Zitat Zitat von Thomas Beitrag anzeigen
    Du kannst $field['content'] auf Inhalt prüfen und dann entsprechend reagieren:
    Code:
    <?php if ($field['content'] = ""): ?> <-- leer oder nicht, wenn leer mache irgendwas
    ...
    mache irgendwas
    ...
    <?php endif; ?>
    oder sowas
    Code:
    <?php if ($this->$field['label'] && $field['content'] == ""): ?> <-- wenn Label gesetzt und Content leer dann mache irgendwas
    ...
    mache irgendwas
    ...
    <?php endif; ?>
    Bei mir hat geholfen, dass ich in die "leer-Abfrage" ein "ODER" eingefügt habe:
    $field['content'] == '&nbsp;'

  16. #16
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    Meine "info_fd_table_default.html5" sieht wie folgt aus:

    <div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
    <?php if ($this->headline): ?>
    <<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
    <?php endif; ?>
    <div class="go_back">{{link::back}}</div>
    <br /><br />
    <table class="single_record">
    <tbody><?php foreach ($this->record as $class => $col): ?>
    <tr class="<?php echo $class; ?>">
    <td class="label" style="width: 200px;"><?php echo $col['label']; ?>:&nbsp;</td>
    <td class="value" style="width: 400px;">
    <?php if ($col['type']=='file' && $col['multiple']): ?>
    <?php foreach ($col['content'] as $file): ?>
    <?php if ($file['display']=='image'): ?><img src="<?php echo($this->getImage($file['src'], 160, null)); ?>" alt="<?php echo urldecode(basename($file['src'])); ?>" title="<?php echo urldecode(basename($file['src'])); ?>">
    <?php else: ?><img src="<?php echo $file['icon']; ?>" alt="<?php echo $file['linkTitle']; ?>">&nbsp;<a href="<?php echo $file['href']; ?>"><?php echo $file['linkTitle'] . $file['size']; ?></a>
    <?php endif; ?>
    <?php endforeach; ?>
    <?php elseif ($col['type']=='file' && $col['src']): ?>
    <?php if ($col['display']=='image'): ?><img src="<?php echo($this->getImage($col['src'], 160, null)); ?>" alt="<?php echo urldecode(basename($col['src'])); ?>" title="<?php echo urldecode(basename($col['src'])); ?>">
    <?php else: ?><img src="<?php echo $col['icon']; ?>" alt="<?php echo $col['linkTitle']; ?>">&nbsp;<a href="<?php echo $col['href']; ?>"><?php echo $col['linkTitle'] . $col['size']; ?></a>
    <?php endif; ?>
    <?php else: echo $col['content'].'&nbsp;'; endif; ?>
    </td>
    </tr><?php endforeach; ?>
    </tbody>
    </table>

    <!-- indexer::stop -->
    <?php if ($this->editAllowed): ?>
    <div class="fd_edit"><a href="<?php echo $this->link_edit; ?>" class="fd_edit" title="<?php echo $this->textlink_edit[1]; ?>"><?php echo $this->textlink_edit[0]; ?></a></div>
    <?php endif; ?>

    <?php if ($this->deleteAllowed): ?>
    <div class="fd_delete"><a href="<?php echo $this->link_delete; ?>" class="fd_delete" onclick="if (!confirm('<?php echo $this->text_confirmDelete; ?>')) return false;" title="<?php echo $this->textlink_delete[1]; ?>"><?php echo $this->textlink_delete[0]; ?></a></div>
    <?php endif; ?>

    <?php if ($this->exportAllowed): ?>
    <div class="fd_export"><a href="<?php echo $this->link_export; ?>" class="fd_export" title="<?php echo $this->textlink_export[1]; ?>"><?php echo $this->textlink_export[0]; ?></a></div>
    <?php endif; ?>
    <br />
    <div class="go_back">{{link::back}}</div>
    <!-- indexer::continue -->

    <?php if ($this->allowComments && ($this->comments || !$this->requireLogin)): ?>

    <div class="ce_comments block">

    <<?php echo $this->hlc; ?>><?php echo $this->addComment; ?></<?php echo $this->hlc; ?>>
    <?php foreach ($this->comments as $comment) echo $comment; ?>
    <?php echo $this->pagination; ?>
    <?php if (!$this->requireLogin): ?>

    <!-- indexer::stop -->
    <div class="form">
    <?php if ($this->confirm): ?>

    <p class="confirm"><?php echo $this->confirm; ?></p>
    <?php else: ?>

    <form action="<?php echo $this->action; ?>" id="<?php echo $this->formId; ?>" method="post">
    <div class="formbody">
    <input type="hidden" name="FORM_SUBMIT" value="<?php echo $this->formId; ?>">
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
    <div class="widget">
    <?php echo $this->fields['name']->generateWithError(); ?> <?php echo $this->fields['name']->generateLabel(); ?>
    </div>
    <div class="widget">
    <?php echo $this->fields['email']->generateWithError(); ?> <?php echo $this->fields['email']->generateLabel(); ?>
    </div>
    <div class="widget">
    <?php echo $this->fields['website']->generateWithError(); ?> <?php echo $this->fields['website']->generateLabel(); ?>
    </div>
    <?php if (isset($this->fields['captcha'])): ?>
    <div class="widget">
    <?php echo $this->fields['captcha']->generateWithError(); ?> <label for="ctrl_captcha"><?php echo $this->fields['captcha']->generateQuestion(); ?><span class="mandatory">*</span></label>
    </div>
    <?php endif; ?>
    <div class="widget">
    <?php echo $this->fields['comment']->generateWithError(); ?> <label for="ctrl_<?php echo $this->fields['comment']->id; ?>" class="invisible"><?php echo $this->fields['comment']->label; ?></label>
    </div>
    <div class="submit_container">
    <input type="submit" class="submit" value="<?php echo $this->submit; ?>">
    </div>
    </div>
    </form>
    <?php if ($this->hasError): ?>

    <script>
    try {
    window.scrollTo(null, ($('<?php echo $this->formId; ?>').getElement('p.error').getPosition().y - 20));
    } catch(e) {}
    </script>
    <?php endif; ?>
    <?php endif; ?>

    </div>
    <!-- indexer::continue -->
    <?php endif; ?>

    </div>
    <?php endif; ?>

    </div>
    Wo müsste ich jetzt
    <?php if ($this->$field['label'] && $field['content'] == ""): ?>
    in dem Template einbauen, damit leere Felder ausgelassen werden.?

  17. #17
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard

    @aadursun: Hier musst Du auch die Tabellenstruktur bei Leerfeldern ausblenden. Es müsste eigentlich klappen, wenn Du folgendermaßen vorgehst:

    Als erstes trenne die Zeile 24: </tr><?php endforeach; ?>
    und füge dazwischen ein endif ein:

    </tr>
    <?php endif; ?>
    <?php endforeach; ?>

    Dann füge nach Zeile 8: <tbody><?php foreach ($this->record as $class => $col): ?>
    folgenden Code ein:

    <?php if ($col['type']<>'file' && $col['content'] > ' ' && $col['content'] <> '&nbsp;'): ?>

    Gehts?

  18. #18
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    @vates

    Vielen Dank für die Super-Anleitung. Funktioniert

  19. #19
    Contao-Fan Avatar von aadursun
    Registriert seit
    25.09.2011.
    Beiträge
    543

    Standard

    Leider doch nicht wie gewünscht, denn die Bilder die über Dateiupload hochgeladen wurden, werden nicht mehr angezeigt. Diese sind in der Detailseite ausgeblendet.

  20. #20
    Contao-Nutzer Avatar von vates
    Registriert seit
    10.02.2012.
    Ort
    21493
    Beiträge
    36

    Standard

    Oh, das war dann doch zu schnell. Bitte die eingefügte Zeile (jetzt 9) ändern in:

    Code:
    <?php if ($col['type']=='file' || ($col['content'] > ' '  && $col['content'] <> '&nbsp;')): ?>
    Muss natürlich ein "oder" sein.

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
  •