[英]Dynamically call a macro in Twig?
可以動態調用 Twig中的宏嗎? 例如,這是一個模板和一個名為“group”的宏,它使用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
自動調用的宏。 這可能嗎?怎么樣?
對於那些尋找如何使用屬性實現動態宏調用的示例,請查看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.