我无法访问 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() 直接调用该宏,而不是导入它;即使看起来可行,这也只是当前实现的副作用,它在 Twig 2.x 中不再有效。
您可以设置全局变量并在模板中的任何位置访问它
$loader = new \Twig_Loader_Filesystem('path/to/templates');
$twig = new \Twig_Environment($loader);
$twig->addGlobal('V_Name', 'V_Value');