Lig*_*gio 11 variables macros twig
我无法在TWIG宏中访问模板变量.
这是一个简化的例子:
{% set myname = "Ligio" %}
{{ _self.pagedurl(1) }}
{% macro pagedurl(page) %}
Hi {{ _self.myname }}! This is Page Num {{ page }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
如何在不将其传递给宏的情况下访问变量myname?
che*_*fly 19
你不能.
如文档中所述:
作为PHP函数,宏无法访问当前模板变量.
您唯一的解决方案是将参数传递给macro:
{% import _self as flow %}
{{ flow.pagedurl(1, "Ligio") }}
{% macro pagedurl(page, myname) %}
Hi {{ myname }}! This is Page Num {{ page }}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
重要的提示:
你可能已经注意到我的例子,我打电话{% import _self as flow %}.
这是你必须做的事情:
当您在模板中定义要使用它的宏时,可能很想通过_self.input()直接调用宏而不是导入它; 即使似乎工作,这只是当前实现的副作用,它将不再适用于Twig 2.x.
http://twig.sensiolabs.org/doc/tags/macro.html
如果需要将多个全局变量传递给宏,您可能会发现该_context变量很有用:
{% macro mymacro(globalvars) %}
Value of the global variable pi is {{ globalvars.pi }}
{% endmacro %}
{% set pi = 3.14159 %}
{{ _self.mymacro(_context) }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13466 次 |
| 最近记录: |