it-swarm.com.de

Stellen Sie sicher, dass ein Feld nicht leer ist

Was ist die beste Methode, um zu überprüfen, ob ein Feld in einer Knotenvorlage leer ist?.

In node - example.html.twig können wir die Variable "content" verwenden.

Ich kann check nicht wie das Überprüfen eines Blocks verwenden

{% if content.field_example  %}

Ich kann so etwas verwenden:

{% if content.field_example['#object'] is defined  %}

Aber was ist die beste Methode?

16
sainf

Wie ich auch in geschrieben habe Wie können Sie Felder aus einer Entitätsreferenz in Knotenvorlagen rendern? [Drupal 8] , Inhalt ist ein Render-Array, das Daten enthält, die für die Anzeige vorbereitet sind.

Wenn Sie etwas überprüfen oder vergleichen möchten, verwenden Sie stattdessen die Werte, die für das Knotenobjekt verfügbar sind.

{% if node.field_example.value %}.

Beachten Sie, dass die Eigenschaft vom Feldtyp abhängt. Wenn es sich um ein Referenzfeld handelt, müssen Sie stattdessen target_id verwenden. Die Frage, auf die verwiesen wird, verweist auf einen API-Spickzettel für Entitätsfelder, in dem allgemeine Feldtypen und ihre Eigenschaften aufgeführt sind.

22
Berdir

Sie können sich über die Struktur des Render-Arrays innerhalb des Inhalts nicht sicher sein, daher ist dies möglicherweise nicht die beste Methode.

Dies kann eine bessere Lösung sein:

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

Dadurch wird überprüft, ob beim Rendern des Felds eine Ausgabe generiert wird.

Dies hängt jedoch davon ab, wie Sie das Feldformat konfiguriert haben und was Sie versuchen. Sie könnten beispielsweise so konfiguriert haben, dass eine Beschriftung angezeigt wird, wenn das Feld leer ist. Dann müssen Sie dies anpassen. Wenn Sie nicht von der gerenderten Ausgabe abhängig sind und nur überprüfen möchten, ob das Feld einen Wert in der Datenbank hat, verwenden Sie das Knotenobjekt. Siehe Berdirs Antwort.

13
4k4

Überprüfen Sie, ob das Feld in Twig templating ( Field Collection ) nicht leer ist.)
Vorlage: Feldsammlungselement - Felddienste.html.twig

Installieren Sie Field Twig Value Module , um den Wert mit " | field_value " zu erhalten von " ist nicht leer "

{% if content.field_work|field_value is not empty %}

       ...

{% endif %} 
4
Alberto Galvis
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
  <div class="whatever_markup">
    {{ content.field_whatever }}
  </div>
{% endif %}

Diese Lösung ist ziemlich kugelsicher und funktioniert sogar in wiederverwendbaren und/oder gemeinsam genutzten Vorlagen (z. B. einem gemeinsam genutzten node--teaser.html.twig Über mehrere Bundles hinweg), weil

  • es funktioniert für alle Feldtypen
  • es prüft, ob das Feld existiert
  • es wird geprüft, ob das Feld nicht leer ist
  • es wird geprüft, ob das Feld im Anzeigemodus nicht ausgeblendet ist

Das doppelte Negativ not ...isEmpty == true Ist erforderlich, da sonst ein nicht vorhandenes Feld die Prüfung nicht bestehen würde. Ich glaube auch, dass meine Lösung viel schneller und fehleranfälliger ist als jede Überprüfung, bei der das Feld gerendert wird.

Dies sollte für jede Entitätsvorlage funktionieren, z. Sie können einfach node.field_xxx durch paragraph.field_xxx in einer paragraph.html.twig - Vorlagendatei ersetzen

2
Hudri