2012-03-04 3 views
4

Возможно, динамически вызывать макрос в Twig? Например, вот шаблон и макрос с именем «группа», который строит группу кнопок с использованием аргумента buttonsarray. Существуют также два других макроса: save и delete, для создания кнопок сохранения и удаления.Динамически вызывать макрос в Twig?

{# 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 макросы называются автоматически. Это возможно и как?

ответ

0

почему бы не просто сделать

{% import "::buttons.html.twig" as buttons %} 
{{ buttons.group([buttons.save, buttons.delete]) }} 
Смежные вопросы