Можно ли динамически вызывать макрос в Twig? Например, вот шаблон и макрос с именем «группа», который строит группу кнопок, используя аргумент buttons
array
. Есть также два других макроса, save
и delete
, для построения кнопок сохранения и удаления.
{# Make a group of buttons #}
{% macro group(buttons) %}
{% spaceless %}
{% import "::macros.html.twig" as macros %}
{% set content = '' %}
{% for button in buttons %}
{% set content = content ~ button %}
{% endfor %}
{{ macros.el('div', content, { 'class' : 'btn-group' }) }}
{% endspaceless %}
{% endmacro %}
{# Make a save button #}
{% macro save(attributes, size, image) %}
{% spaceless %}
{{ _self.primary('save'|trans({}, 'buttons'), attributes, size, image) }}
{% endspaceless %}
{% endmacro %}
{# Make a delete button #}
{% macro delete(attributes, size, image) %}
{% spaceless %}
{{ _self.danger('delete'|trans({}, 'buttons'), attributes, size, image) }}
{% endspaceless %}
{% endmacro %}
Это прекрасно работает, передавая array
кнопок:
{% import "::buttons.html.twig" as buttons %}
{% set items = [buttons.save, buttons.delete] %}
{{ buttons.group(items) }}
Но я бы хотел передать имена макросов в group
макрос:
{% import "::buttons.html.twig" as buttons %}
{{ buttons.group(['save', 'delete']) }}
и макросы save
и delete
вызываются автоматически. Это возможно и как?