Twig 小枝&x2014;打印到根块
有一个名为Twig 小枝&x2014;打印到根块,twig,Twig,有一个名为index.html.twig的模板,它定义了以下块: {% block additional %}{% endblock %} {% block body %} {{ macros.renderModule(modules) }} {% endblock %} 其中,macros.renderModule是一个自定义宏,递归地呈现模块 每个模块模板(.html.twig)扩展base.html.twig如下: {% extends '::/modules/base.html.
index.html.twig
的模板,它定义了以下块:
{% block additional %}{% endblock %}
{% block body %}
{{ macros.renderModule(modules) }}
{% endblock %}
其中,macros.renderModule
是一个自定义宏,递归地呈现模块
每个模块模板(.html.twig
)扩展base.html.twig
如下:
{% extends '::/modules/base.html.twig' %}
在a.html.twig
中,我想打印到附加的
块,即»根«。如果我将块移动到base..html.twig
它会工作,因为每个类型都直接扩展»base«
如何打印到根目录中定义的块
更新
根据评论,这里有一个小说明:
1.:
+base.html.twig //root
|
+--+index.html.twig //extends base.html.twig and
//defines a block »additional«
//starts the recursive call »macros.renderModule(…)«
//those calls use the templates shows below
2.:
+modules/base.html.twig //base for each module
|
+--+modules/<type>.html.twig //extends modules/base.html.twig
//special template for each »type« of module
//**************
//PRINT TO block »additional«,
//defined in index.html.twig
//**************
您的意思是更改渲染宏的文件的内容?默认情况下,无法在
twig
中完成。您是否可以更精确地了解您到底想要实现什么?如果要从不属于当前模板继承链的模板渲染块,可以将该模板传递给block()
函数(请参见)。但老实说,我不确定我是否真的理解了你的问题。
{% macro renderModule (modules) %}
{% import _self as macros %}
{% for module in modules %}
{% include '::/modules/' ~ module.type ~ '.html.twig' with {module: module} %}
{% endfor %}
{% endmacro %}