[英]Render Twig macro from PHP?
我目前正在将一个项目从旧的基于XML的定制模板引擎迁移到Twig 。 为了简化过渡,我认为能够从旧引擎内部渲染Twig宏可能会很好,以便可以使用Twig构建新的小部件并根据需要在两个地方运行。
我能想到的唯一方法是生成一些如下所示的Twig源代码:
{% import 'macros.twig' as m %}
{{ m.widget(...) }}
然后做一些疯狂的事情
eval('?>'.$twig->compileSource($twig->getLoader()->getSource($name), $name));
这似乎很慢,危险且脆弱。 是否有更好的方式利用Twig API?
是的,要渲染模板,您应该使用:
echo $twig->loadTemplate($name)->render($context);
如果在缓存中不存在该树枝,则loadTemplate
将编译该树枝源。
render
方法将安全地渲染您的模板。
宏基本上是编译类的一种方法(请参见此提琴的编译模板链接: http : //twigfiddle.com/orfp3d ),您可以从外部轻松地调用宏,但是不建议这样做(因为您的宏不会参加TemplateInterface
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.