it-swarm.com.de

Abruf-ID in Feldvorlage abrufen

Ich habe eine Absatzvorlage, in der ich ein Feld drucke, zum Beispiel:

{{ content.field_products }}

In dieser Vorlage kann ich die Absatz-ID erhalten mit:

paragraph.id()

Ich muss diese Absatz-ID in der Feldvorlage übergeben. Was ist der sauberere und einfachere Weg, dies zu tun? Ich habe eine Lösung wie diese gefunden:

{{ content.field_products|merge({666:paragraph.id()}) }}

und dann bekomme ich den Wert in der Feldvorlage wie folgt:

{% set paragraphId = items[items|length-1].content %}

Dies ist jedoch fehlerhaft und generiert eine Warnung "Message d'erreurUser error:" 4 "ist ein ungültiger Render-Array-Schlüssel in Drupal\Core\Render\Element :: children () (Zeile 99 von core/lib/Drupal/Core/Render /Element.php). " dass ich verstehen kann, dass es ein schmutziger Hack ist und drupal versuchen, mein "666" -Array zu rendern.

Ich werde wahrscheinlich das Array mit dem Schlüssel "666" erhalten, den ich in einem preprocess_field () hinzugefügt habe, eine neue Variable für die Feldvorlage erstellen und diesen teuflischen Hack aus $ variables löschen, um die Warnung zu entfernen, da versucht wurde, dieses gefälschte Array zu rendern , aber ich denke, es gibt einen besseren Weg zu tun? Ich möchte einfach eine Variable aus einer Vorlage an ihr Kind übergeben ...

vielen Dank !

4

Die saubere Lösung ist die Vorlagenvorverarbeitung: In yourtheme.theme erstelle so etwas wie

function yourtheme_preprocess_field(&$variables, $hook) {
  $element = $variables['element'];
  $parentEntity = $element['#object'];
  //might be useful for if-clause: $variables['field_name'] and $variables['field_type']
  if ($parentEntity && $parentEntity->getEntityTypeId() == 'paragraph' ) {
    //whatever logic you need goes here, e.g. something like
    //$variables['attributes']['data-from-parent-paragraph'] = $parentEntity->getYourStuff();
  }
}
4
Hudri