包含的Twig绝对路径变量

时间:2014-08-19 15:50:18

标签: symfony include twig

我的脚本在PHP中定义了一个绝对路径,并将其提供给带有render() - 函数的twig模板。一切正常,我可以在视图中使用{{ varName }}访问我的变量。但是如果我尝试在像{% include varName %}这样的include-command中使用绝对路径作为变量,它会说:无法找到模板。如果绝对路径正确,甚至会发生这种情况。

我在这里缺少什么?

2 个答案:

答案 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

注意:使用addPathprependPath的选择取决于您希望Twig搜索目录的顺序。使用prependPath添加的路径将在任何先前加载的路径之前搜索。

警告:搜索顺序适用于所有模板,因此如果您在include语句中使用的路径/文件名不是唯一的,则可能最终覆盖另一个模板。