{% macro %}
{% macro %} 标签允许您在模板中定义自定义函数,类似于常规编程语言。
___TWIG0___
...
___TWIG1___
或者,您可以在结束标记后包含macro的名称以提高可读性:
___TWIG0___
...
___TWIG1___
以下示例定义了一个名为 input() 的函数,该函数接受 4 个参数,关联的值作为内部标记中的变量进行访问。
___TWIG0___
<input
type="___TWIG1___"
name="___TWIG2___"
value="___TWIG3___"
size="___TWIG4___" />
___TWIG5___
注意:macro参数不指定默认值,并且始终被认为是可选的。
# 调用宏
在使用macro之前,需要先使用{% import %}标签"导入"它。如果macro定义在同一个模板中,可以使用特殊的_self变量。
___TWIG0___
在这里,macro函数被分配给 form 变量,可以像任何其他函数一样被调用。
<p>___TWIG0___</p>
<p>___TWIG1___</p>
Macros 可以在 主题部件 中定义并按名称导入. 要从名为 macros/form.htm 的部件导入macro,只需在 import 标记后传递名称作为字符串引用。
___TWIG0___
或者,您可以从 系统视图文件导入macro,要从 plugins/acme/blog/views/macros.htm 导入,只需传递路径提示即可。
___TWIG0___
# 嵌套宏
当您想在同一模板的另一个macro中使用macro时,您需要在本地导入它。
___TWIG0___
<input
type="___TWIG1___"
name="___TWIG2___"
value="___TWIG3___"
size="___TWIG4___" />
___TWIG5___
___TWIG6___
___TWIG7___
<div class="field">
___TWIG8___
</div>
___TWIG9___
# 上下文变量
macro无权访问当前页面变量
<!-- October CMS -->
___TWIG0___
___TWIG1___
<!-- NULL -->
___TWIG2___
___TWIG3___
您可以使用特殊的 _context 变量将变量传递给函数。
___TWIG0___
___TWIG1___
___TWIG2___
___TWIG3___
<!-- October CMS -->
___TWIG4___