我正在尝试是否使用变量来调用特定的宏名称。
我有一个正在导入的宏文件
{% import 'form-elements.html.twig' as forms %}
现在在那个文件中有所有的表单元素宏:text、textarea、select、radio 等。
我有一个传入的数组变量,其中包含一个元素:
$elements = array(
array(
'type'=>'text,
'value'=>'some value',
'atts'=>null,
),
array(
'type'=>'text,
'value'=>'some other value',
'atts'=>null,
),
);
{{ elements }}
我想做的是从宏中生成这些元素。当按名称调用时,它们工作得很好:
{{ forms.text(element.0.name,element.0.value,element.0.atts) }}
但是我想做的是这样的:
{% for element in elements %}
{{ forms[element.type](element.name,element.value,element.atts) }}
{% endfor %}
我已经尝试了以下所有导致相同的错误:
{{ 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) }}
不幸的是,这会引发以下错误:
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
任何有关解决方案或更好使用模式的帮助或建议都会非常有帮助。