Shopware Icon in Twig aus Plugin-Variable holen

Hallo Leute,

kurze Frage: Ich gebe mit folgendem Twig Befehl ein Icon aus:

{% sw_icon ‘bookmark’ style { ‘size’: ‘xs’ } %}

Jetzt habe ich ein Plugin und dort speichere ich in der Config welches Icon geladen werden soll. Die Variable heißt z.B. “shopware.config.MyPlugin.config.MyPluginIcon”. Wenn ich jetzt folgendes mache, funktioniert es natürlich nicht - ich habe auch schon etliche andere Varianten durchprobiert:

{% sw_icon ‘{{ shopware.config.MyPlugin.config.MyPluginIcon }}’ style { ‘size’: ‘xs’ } %}

Gibt es hierfür eine Lösung?

Vielen Dank im Voraus und Grüße

Tim

Habe es noch nicht verwenet und ist nur getippt, aber was ist mit 

{% sw_icon ~ shopware.config.MyPlugin.config.MyPluginIcon style { 'size': 'xs' } %}

Ansonsten: Was ist die genaue Fehlermeldung?

Das funktioniert leider auch nicht:

Unexpected token “operator” of value “~”.

Hallo,

hat Niemand eine Idee? Es muss doch möglich sein, eine Variable in diesen Icon Tag zu bekommen?

*push*

Hallo,

 

was gibt denn {{ shopware.config.MyPlugin.config.MyPluginIcon }}’ aus? oder {{ dump( shopware.config.MyPlugin.config.MyPluginIcon ) }}

Gruß

@gwen‍

Den Wert, der in den Pluginsettings hinterlegt ist. Zum Beispiel “bookmark”. Aber man kann die Variable bzw. deren Wert nicht innerhalb “sw_icon” verwenden, jedenfalls nicht in den oben bereits genannten Varianten. Wenn da Jemand eine Idee hat oder weiß wie es geht - immer her damit :slight_smile:

@mit3233‍

h‍ab das mal probiert und muss sagen: “Mööööp” geht nicht. Alle “sw_…” Funktionen erwarten als Value immer einen String. Siehst du, wenn du in der IDE deines Vertrauens mal nach “{% sw_” sucht. Beispiel sw_extends, sw_inlude, sw_thumbnail usw.

Diese “sw_…” Twig Tags werden direkt durch den Twig-Parser gesendet und ausgewertet (nach parameter, wie z.B. den style {‘size’:‘x’}. usw. Eine Rekursivität, ob bereits eine Twigvariable übergeben wird, die wiederum geparst und aufgelöst werden muss ist da nicht implementiert. Das meiste passiert in den tiefen von symfony twig parser. Hab mich da gerade mal durch debugged.

However, wenn du das in deinem eigenen Template brauchst, kannst du natürlich einfach das machen was intern auch passiert. 

 {% sw_icon 'bookmark' %}

ersetzen durch 

{% sw_include "@Storefront/storefront/utilities/icon.html.twig" with { 'name': 'bookmark', 'size': 'xl'} %}

bzw. der Variablen von deiner Config (habs mal abgekürzt damit es in eine Zeile geht)

{% set meineConfigVariable = shopware.config.MyPlugin.config.MyPluginIcon %}
{% sw_include "@Storefront/storefront/utilities/icon.html.twig" with { 'name': meineConfigVariable, 'size': 'xl'} %}

Die “size” musst natürlich nicht angeben, wollte nur aufzeigen, wie man die “styles” definiert.

Insgesamt hast 

 name, size, color, rotation, flip, class

zur Verfügung.

Schau dir einfach mal die Datei  storefront/utilities/icon.html.twig an.

Hoffe das Hilft dir weiter.

Gruß

daMardl

4 Likes

Das hat geklappt, vielen Dank!