Ich versuche, eine Variable zu verwenden, um einen bestimmten Makronamen aufzurufen.Verwenden von Zweigvariable zum dynamischen Aufrufen einer importierten Makrounterfunktion
Ich habe eine Datei, die Makros
{% import 'form-elements.html.twig' as forms %}
Jetzt gibt in dieser Datei importiert wird, sind alle Formularelemente Makros: Text, Textfeld, wählt, Radio usw.
Ich habe ein Array-Variable dass übergeben wird, dass ein Element in sie hat:
$elements = array(
array(
'type'=>'text,
'value'=>'some value',
'atts'=>null,
),
array(
'type'=>'text,
'value'=>'some other value',
'atts'=>null,
),
);
{{ elements }}
was im Versuch, die Elemente aus dem Makros zu tun ist, zu erzeugen. sie gut funktionieren, wenn sie von Namen genannt:
{{ forms.text(element.0.name,element.0.value,element.0.atts) }}
jedoch, was ich ist so etwas zu tun:
{% for element in elements %}
{{ forms[element.type](element.name,element.value,element.atts) }}
{% endfor %}
ich folgendes alles, was zur gleichen Fehler versucht haben:
{{ forms["'"..element.type.."'"](element.name,element.value,element.atts) }}
{{ forms.(element.type)(element.name,element.value,element.atts) }}
{{ forms.{element.type}(element.name,element.value,element.atts) }}
Dies führt leider den folgenden Fehler:
Fatal error: Uncaught exception 'LogicException' with message 'Attribute "value" does not exist for Node "Twig_Node_Expression_GetAttr".' in Twig\Environment.php on line 541
Jede Hilfe oder Beratung zu einer Lösung oder einem besseren Schema wäre sehr hilfreich.
In Twig 2, ist dies nicht mehr eine Lösung :(von dem, was ich verstehe, für Attribut "Sicherheitsgründe" kann nicht auf Vorlagen zugreifen. – notacouch