我无法访问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

10-07 19:59
查看更多