Ich verwende den folgenden Code, um die Variablen für meine Vorlage vorzuverarbeiten:
function template_preprocess_imagegallery_format(&$vars) {
template_preprocess_image_formatter($vars);
$vars['image']['#theme'] = 'igimage';
$vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
$vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}
Die Variable #uri ist bereits vorhanden, und wenn ich sie nur ändere, funktioniert alles einwandfrei. Aber ich muss hier zusätzliche Variablen hinzufügen, da ich zwei verschiedene Stile desselben Bildes benötige. Das einfache Hinzufügen dieser Variablen zum Array funktioniert jedoch nicht.
Wenn ich die verfügbaren Variablen in meiner Twig-Vorlage mit speichere {{ dump(_context|keys) }}
, werden die dort hinzugefügten Variablen nicht angezeigt. Wenn ich versuche, sie in meiner Vorlage zu verwenden, wird nichts eingefügt.
Ich kann sehen, dass die Werte dem Array hinzugefügt werden. Wenn ich die Bildvariable in dem Thema speichere, das das gesamte Feld rendert, werden meine Variablen im Array angezeigt. Sie sind jedoch immer noch nicht in der Vorlage verfügbar, mit der die Bildvariable selbst gerendert wird.
Was muss ich noch tun, um meiner Vorverarbeitungsfunktion eine Variable hinzuzufügen, die ich in meiner Twig-Vorlage verwenden kann?
$vars
und Ihren Schlüsseln (z['image']
. B. ). Ich bin mir ziemlich sicher, dass das nicht erlaubt ist.template_preprocess_imagegallery_format
aber 'Vorlage' sollte durch Ihren Themen- oder Modulnamen ersetzt werden. Sie benötigen außerdem einen leeren Cache.Antworten:
Ich habe das Problem endlich gelöst. Es stellte sich heraus, dass ich versucht habe, die Variablen im falschen Präprozessor hinzuzufügen. Das Bearbeiten des #theme funktioniert dort, aber um Variablen hinzuzufügen, musste ich das dort festgelegte Thema vorverarbeiten:
quelle
Themenname: atvdirect
Verwenden Sie {{logopath}} in page.html.twig
quelle