簡體   English   中英

動態調用Twig中的宏?

[英]Dynamically call a macro in Twig?

可以動態調用 Twig中的宏嗎? 例如,這是一個模板和一個名為“group”的宏,它使用buttons array參數構建一個按鈕組。 還有另外兩個宏, 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自動調用的宏。 這可能嗎?怎么樣?

對於那些尋找如何使用屬性實現動態宏調用的示例,請查看https://gist.github.com/tentacode/9728963b9f3a714608f3

為什么不做呢

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM