【问题标题】:Dynamically call a macro in Twig?在 Twig 中动态调用宏?
【发布时间】:2012-03-04 15:49:44
【问题描述】:

是否可以在 Twig 中动态调用宏?例如,这里有一个模板和一个名为“group”的宏,它使用buttonsarray 参数构建一个按钮组。还有另外两个宏,savedelete,用于构建保存和删除按钮。

{# 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']) }}

并自动调用 savedelete 宏。这可能吗?如何实现?

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    为什么不这样做

    {% import "::buttons.html.twig" as buttons %}
    {{ buttons.group([buttons.save, buttons.delete]) }}
    

    【讨论】:

      【解决方案2】:

      对于那些寻找如何使用属性实现动态宏调用的示例的人,请查看https://gist.github.com/tentacode/9728963b9f3a714608f3

      【讨论】:

        猜你喜欢
        • 2012-12-10
        • 2018-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        相关资源
        最近更新 更多