我的脚本在PHP中定义了一个绝对路径,并将其提供给带有render()
- 函数的twig模板。一切正常,我可以在视图中使用{{ varName }}
访问我的变量。但是如果我尝试在像{% include varName %}
这样的include-command中使用绝对路径作为变量,它会说:无法找到模板。如果绝对路径正确,甚至会发生这种情况。
我在这里缺少什么?
答案 0 :(得分:0)
这很奇怪,但不幸的是我没有可能从其他地方包含一个不在特定symfony结构中的文件。所以我不得不将所有内容移动到视图文件夹。
我希望有人能解决这个问题,这不过是灵活的。
答案 1 :(得分:0)
要将模板搜索路径添加到Twig_Loader_Filesystem
,您可以使用
$loader->addPath($templateDir);
或
$loader->prependPath($templateDir);
其中$templateDir
是父目录,$loader
是包含Twig_Loader_Filesystem
对象的变量。在您的示例中,您希望$templateDir
成为Bundle目录所在的路径。
然后,在你的包含中做这样的事情:
{% include 'Bundle\Somedir\somefile.html.twig' %}
Twig将搜索所有路径,寻找Bundle\Somedir\somefile.html.twig
并返回找到的第一个路径。
有关此主题的Twig文档可在此处找到:http://twig.sensiolabs.org/doc/api.html#twig-loader-filesystem
注意:使用addPath
或prependPath
的选择取决于您希望Twig搜索目录的顺序。使用prependPath
添加的路径将在任何先前加载的路径之前搜索。
警告:搜索顺序适用于所有模板,因此如果您在include
语句中使用的路径/文件名不是唯一的,则可能最终覆盖另一个模板。