我無法訪問TWIG宏中的模板變量。如何在TWIG宏中訪問模板變量?
下面是一個簡單的例子:
{% set myname = "Ligio" %}
{{ _self.pagedurl(1) }}
{% macro pagedurl(page) %}
Hi {{ _self.myname }}! This is Page Num {{ page }}
{% endmacro %}
我怎樣才能訪問變量MYNAME沒有它傳遞給宏?
我無法訪問TWIG宏中的模板變量。如何在TWIG宏中訪問模板變量?
下面是一個簡單的例子:
{% set myname = "Ligio" %}
{{ _self.pagedurl(1) }}
{% macro pagedurl(page) %}
Hi {{ _self.myname }}! This is Page Num {{ page }}
{% endmacro %}
我怎樣才能訪問變量MYNAME沒有它傳遞給宏?
你不能。
如文檔中表示:
由於PHP函數,宏沒有訪問當前模板 變量。
你唯一的解決辦法是把參數傳遞給macro
:
{% import _self as flow %}
{{ flow.pagedurl(1, "Ligio") }}
{% macro pagedurl(page, myname) %}
Hi {{ myname }}! This is Page Num {{ page }}
{% endmacro %}
重要提示:
你可以在我的例子已經注意到了,我叫{% import _self as flow %}
。
這是你MUST做:
當你在模板中定義一個宏,你要使用它, 你可能會直接通過_self.input調用宏() 而不是導入它;即使似乎工作,這只是當前實現的 副作用,它不會在 Twig 2.x中工作。
可以「破解」你的「全局變量」的一個解決方案是構建一個樹枝var(或使用_context)作爲重要變量的數組,然後將這個單個樹枝var作爲最後一個參數傳遞給你使用的任何宏。 ---------當你的宏的範圍內,你可以通過varargs屬性訪問這個最後的參數。例如:{%set MyGlobals = varargs [0]%} – 2017-11-21 13:00:42
你試過簡單的'{{myname}}'嗎? – Maerlyn 2013-02-27 15:41:28
與{{myname}}我不在變量的範圍內... 它不工作! – Ligio 2013-02-27 16:27:55