Sto tentando di utilizzare una variabile per chiamare un nome di macro specifico.Utilizzo della variabile ramoscello per chiamare dinamicamente una sottofunzione macro importata
Ho un file macro che viene importato
{% import 'form-elements.html.twig' as forms %}
Ora in quel file ci sono tutti i macro elementi modulo: il testo, textarea, selezionare, radio, ecc
Ho una variabile di matrice in cui sono presenti elementi:
$elements = array(
array(
'type'=>'text,
'value'=>'some value',
'atts'=>null,
),
array(
'type'=>'text,
'value'=>'some other value',
'atts'=>null,
),
);
{{ elements }}
quello che sto cercando di fare è generare quegli elementi dalle macro. funzionano bene quando chiamato per nome:
{{ forms.text(element.0.name,element.0.value,element.0.atts) }}
Tuttavia quello che voglio fare è qualcosa di simile:
{% for element in elements %}
{{ forms[element.type](element.name,element.value,element.atts) }}
{% endfor %}
Ho provato quanto segue tutto con conseguente lo stesso errore:
{{ 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) }}
Questo getta, purtroppo, il seguente errore:
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
Qualsiasi aiuto o consiglio su una soluzione o uno schema migliore da usare sarebbe molto utile.
In Twig 2, questo non è più una soluzione :(da quanto ho capito, per l'attributo dei motivi di sicurezza non può accedere ai modelli. – notacouch