我需要加载一个页面,它将被插入"在模板中 - 当我读到它时,Volt的Template Inheritance应该做的伎俩,它确实......有点儿。硬编码值(如示例中所示)工作正常 - 以下示例有效:
NetworkService
和继承模板的页面:
<!-- Template -->
<div id="site_content">
{% block test %}
{% endblock %}
</div>
但是,同一页面可能需要继承不同的模板,并且必须在运行时决定,因此必须动态生成模板的名称。有两种选择:
注册另一个函数来生成完整的字符串(例如{%extends&#34; ../../ templates / de / index.volt&#34;%})然后编译它,例如
$反编译&GT;调用addFunction(&#39; get_template&#39 ;, function($ resolvedArgs,$ exprArgs)使用($ volt){ 返回$ volt-&gt; getCompiler() - &gt; compileString(&#39; {%extends&#34; ../../ templates / de / index.volt&#34;%}&#39;); });
然后在页面中使用该功能,例如
{% extends "../../templates/de/index.volt" %}
{% block test %}
{{ content() }} {# this is a registered volt function that outputs the generated content #}
{% endblock %}
然而,使用该方法不解析页面内容(例如,未显示由注册的内容()函数返回的内容)。我也对其他解决方案持开放态度(对于性能问题,使用Twig而不是Volt只是最后的手段),我做错的建议或有关该主题的有用文章的指示。提前谢谢!