it-swarm.com.de

Wie füge ich eine Variable mit mytheme_preprocess_field hinzu und drucke mit twig template?

Wir haben einen Inhaltstyp Artikel mit zwei benutzerdefinierten Feldern: field_header Und field_link. Wenn field_header Nicht ausgefüllt ist, möchten wir die Validierung in twig Vorlage zum Hinzufügen einer CSS-Klasse durchführen. Als wir versuchten, eine benutzerdefinierte Variable mit $variables['myVariable'] = TRUE Und festzulegen Versuchen Sie, den Wert in der Vorlage twig) zu drucken. Es wird ein NULL -Wert zurückgegeben.

Wie kann ich mit mytheme_preprocess_field() hook eine benutzerdefinierte Variable erstellen und in der Vorlage twig) verwenden?

mytheme.theme

function mytheme_preprocess_field(&$variables) {
  $element = $variables['element'];
  if($element['#field_name'] == 'field_header') {
    if($element['#items']->first()->isEmpty()) {
      $variables['myVariable'] = TRUE;
    }
  }
}

node - article.html.twig

<div>
  {{ kint(myVariable) }} // Returns NULL everytime.

  {% if myVariable %}
    // If not empty, do something.
  {% else %}
    // If empty, do something else. 
  {% endif %}
</div>
3
usernameabc

Variablen in einer Vorlage haben einen Gültigkeitsbereich - was Sie in hook_preprocess_field ist nur in field.html.twig und seinen Ableitungen verfügbar, nicht in node.html.twig usw.

Sie können dieselbe Logik im Knotenvorprozess implementieren:

function mytheme_preprocess_node(&$variables) {
  if ($variables['node']->hasField('field_header') && $variables['node']->field_header->isEmpty()) {
    $variables['myVariable'] = TRUE;
  }
}
3
Clive