这解释起来有点复杂。我的用例如下:
假设我有以下文件系统结构:
/client/name/web/dashboard.twig <- extends dashboard.twig - file might not exist
/app/name/web/dashboard.twig <- extends dashboard.twig - file might not exist
/web/dashboard.twig <- extends layout.twig - file always exists
/web/layout.twig <- the base template - file always exists
假设我运行$twig->render('dashboard.twig');
,我希望它从最顶层开始,dashboard.twig
并按照上面指定的顺序继续运行。
当前的问题是 twig 最终陷入无限循环,每次都尝试加载第一个模板文件。在食谱部分,有一个例子可以避免这种情况,它使用路径。由于几个问题,这在我的情况下不起作用:
- 的开发者
/client/name/web/dashboard.twig
不应该知道该/app/name/web/dashboard.twig
文件。 - 仍然无法识别
name
路径段,因此路径概念不起作用。
我能想到的唯一解决方案是以某种方式插入 twig 并告诉它在加载模板文件后立即“弹出”模板文件,以消除无限循环。
API 文档的这一部分似乎很有用: http: //twig.sensiolabs.org/api/master/Twig_Loader_Filesystem.html