大家好,谢谢你们抽出时间阅读。
我已经使用Phalcon很长一段时间了,我使用了一个高性能的JSON/XML。管理这个应用程序的后端曾经/仍然是由一个过时的symfony版本驱动的,但是它将被Phalcon和Volt模板引擎所取代。
现在我的问题是:
假设一个基本应用程序和一个基本模板,应用程序是模块化的。大多数模块将由不同的团队开发,但它们都必须集成niceley,这从程序逻辑方面来说并不是一个问题。
但是设想如下:您有一个简单的页面、一些表单、头、导航等等。现在有人想要添加一个模块,该模块将模板块注入到页脚中,以达到任何目的。例如,在页脚中添加一个TagCloud (为了SEO目的)。
这里的想法是,插件可以编辑任何模板文件,而不是它自己带来的。
如何实现这一点,而不必在初始开发之后更改基本模板?
这个想法基本上是连接到一个事件中,为了简单起见,我们把它叫做TEMPLATE_RENDER。TEMPLATE_RENDER被触发,现在为它注册的每个侦听器都有机会向模板中添加一些东西,比如附加块等等。所有这些都无需手动更改核心模板。
如果有一种方法可以简单地在Volt中将一组模板文件添加到一起并输出编译的结果,那就足够了。
编辑:
好吧,经过一番思考,我在Volt里要找的是:
Compiler#compileMultipleFiles(String... files);所以它可以像这样使用:
$compiler->compileMultipleFiles('/path/to/template1','/path/to/template2', ...);“理论上”,它只会将file1、file2、.、fileN中的所有内容放入一个大文件中,然后将其编译为一个模板。如果还不可能,我可以通过简单地将每个文件内容组合成一个文件或缓存变量并使用compileString()来模拟该函数,但是这会破坏模板中的任何相对路径,这将是一个问题。
我也可以手动编译每个模板,但是我最终得到的是一个纯html文档,而无法在主模板中追加到块。
发布于 2014-04-17 17:21:02
显然,没有这样的功能直接。
但是,您可以使用一个数组,并在主模板的末尾遍历这个区域,并动态地包含传递到其中的任何文件。
发布于 2014-04-18 01:35:22
我相信你在找伏特。您可以在模板中保留一些测试,例如:
{% if foo.enabled %}
{% include "foo/bar.volt" %}
{% endif %}如果您需要更复杂的东西,也可以使用模板继承。
https://stackoverflow.com/questions/23072768
复制相似问题