我有一个树枝模板A,它基本上由许多树枝宏组成。 我将该模板包含在另一个树枝模板B中。 我可以以某种方式列出模板B中模板A中定义的所有宏吗? 如果没有,可以使用PHP控制器完成吗?
谢谢
答案 0 :(得分:1)
您可以通过创建扩展twig
的自定义类,在Twig_Template
中破解它
它感觉有点脏,但它大致工作。
请注意:Twig
为使用get
的每个宏添加前缀,因此如果您有{% macro getField .... %}
,则会显示getgetField
当前解决方案。< / em>的
abstract class Template extends \Twig_Template {
public function getDefinedFunctions() {
return array_diff(get_class_methods($this), array_merge(['getDebugInfo', 'getDefinedFunctions'], get_class_methods('\Twig_Template'), get_class_methods('My\ProjectName\Here\Template')));
}
}
将自定义模板类注册到twig
<?php
$loader = new Twig_Loader_Filesystem(__DIR__ . '/path/to/views');
$twig = new Twig_Environment($loader, array(
'base_template_class' => '\My\ProjectName\Here\Template',
));
template.twig
{% import "macros/forms.html" as forms %}
<ul>
{% for function in forms.DefinedFunctions %}
<li>{{ function }}</li>
{% endfor %}
</ul>