我无法访问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 %}
。您必须执行以下操作:
当您在模板中定义要使用宏的位置时,
您可能会想直接通过_self.input()调用宏
而不是导入它;即使看起来可行,但这只是一个
当前实现的副作用,它将不再适用于
树枝2.x。
http://twig.sensiolabs.org/doc/tags/macro.html