首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Phalcon Volt中继承动态模板

在Phalcon Volt中继承动态模板
EN

Stack Overflow用户
提问于 2015-05-15 07:32:24
回答 1查看 795关注 0票数 0

我需要加载一个页面,它将被“插入”到一个模板中--当我读到它时,Volt的模板继承应该能做到这一点,而它确实做到了.有点像。如示例所示,硬编码值工作良好--以下示例工作正常:

代码语言:javascript
复制
<!-- Template -->
<div id="site_content">     
{% block test %}
{% endblock %}
</div>

以及继承模板的页面:

代码语言:javascript
复制
{% extends "../../templates/de/index.volt" %}

{% block test %}
    {{ content() }} {# this is a registered volt function that outputs the generated content #}
{% endblock %}

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

  • 将模板名设置为变量,并在扩展时使用它--这里的问题是,我看不到以后使用它的方法。那家伙似乎也有同样的问题,但对于如何做到这一点既没有一个答案,也没有一个完全不可能的确认。
  • 注册另一个函数以生成完整的字符串(例如,{%扩展“./../模板/de/index.volt”%}),然后编译它。 $编译器->addFunction(‘get_template’,function ($resolvedArgs,$exprArgs) use ($volt) {返回$volt->getCompiler() ->compileString('{%扩展“./../template/de/index.volt”%}');};

然后在页面中使用该函数。

代码语言:javascript
复制
{{ get_template() }}

{% block test %}
    {{ content() }}
{% endblock %}

但是,使用这种方法并不解析页面内容(例如,未显示注册的content()函数返回的内容)。对于其他解决方案,我也持开放态度(对于性能问题,使用Twig而不是Volt只是最后的手段)、对我做错了什么的建议或关于这个主题的有用文章的提示。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-07-09 13:47:16

尝试使用Phalcon:使用部分中所记录的部分

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30253978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档