【发布时间】:2015-08-10 09:39:46
【问题描述】:
我正在使用 Symfony2 组件对旧版应用程序进行现代化改造。 我一直在尝试(并且大多失败)用树枝替换旧的 php 模板。
我正在努力解决的部分是:每个子模板都有自己的类,其中包含自己的逻辑(告诉过你这都是关于遗留的)。
所以,我创建了一个 Twig 扩展,它调用模板类,然后包含子模板,将其传递给类定义的变量 (Here's the extension code)。
例如:
{% template "NavBlockTemplate" %}
- 创建一个新的
NavBlockTemplate实例。- 调用
getTemplateName获取要包含的树枝模板文件 - 调用
getVariables获取模板所需的变量 - 使用给定变量创建所述模板的
Twig_Node_Include
- 调用
这里可悲的是:每个模板都可以将变量传递给它的子模板类构造函数...
所以,我需要,但不确定是否有可能是这样的:
{% template "NavBlockTemplate" with { 'varName': value, 'var_id': otherVar.id }
- 使用从
Twig_Expression对象到php vars的vars编译 - 使用 php 编译 vars 创建一个新的
NavBlockTemplate实例- 调用
getTemplateName获取要包含的树枝模板文件 - 调用
getVariables获取模板所需的变量 - 使用给定变量创建所述模板的
Twig_Node_Include
- 调用
那么,这可能吗?关于如何实现这一点的任何提示?
【问题讨论】:
-
好吧,我不能只使用包含,因为我需要在包含模板之前调用一些中间类
-
所以我不确定,但也许您的扩展程序中需要 twig 环境:lrotherfield.com/blog/…
标签: php symfony templates twig legacy