在Phalcon Volt中继承动态模板

时间:2015-05-15 07:32:24

标签: php templates phalcon volt template-inheritance

我需要加载一个页面,它将被插入"在模板中 - 当我读到它时,Volt的Template Inheritance应该做的伎俩,它确实......有点儿。硬编码值(如示例中所示)工作正常 - 以下示例有效:

NetworkService

和继承模板的页面:

<!-- Template -->
<div id="site_content">     
{% block test %}
{% endblock %}
</div>

但是,同一页面可能需要继承不同的模板,并且必须在运行时决定,因此必须动态生成模板的名称。有两种选择:

  • 将模板名称设置为变量并在扩展时使用它 - 这里的问题是我之后没有看到使用它的方法。 That guy seems to have had the same problem,但既没有答案如何去做,也没有确认它根本不可能。
  • 注册另一个函数来生成完整的字符串(例如{%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只是最后的手段),我做错的建议或有关该主题的有用文章的指示。提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用Phalcon文档中记录的部分:Using Partials