无法得到相对路径... Smarty :(

时间:2014-03-04 11:32:39

标签: php smarty

我坚持使用Smarty(我认为3.1.16)用于大学项目。 我有这个目录结构:

+ templates/
+ -- application.tpl
+ -- backend.tpl
+ -- backend/
+ ---- blog.tpl

内部templates/backend.tpl我有一个{extends 'application.tpl'},当我加载backend.php并呈现此文件时,它会正常工作。

templates/backend/blog.tpl内,我有一个{extends '../backend.tpl'}。当我访问backend/blog.php(加载templates/backend/blog.tpl)时,我收到此错误:

Unable to read template file 'application.tpl'

出现此错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

据我所知,此时设置的路径是相对于设置的模板目录,而不是文件本身。

因此../backend.tpl变为templates/../backend.tpl

如果您设置了单个模板文件夹(“模板”),则在替换

时应该可以使用
{extends '../backend.tpl'}

{extends 'backend.tpl'}

您还可以定义多个模板目录,并通过数组索引(可选)对其进行标识。 使用setTemplateDir方法为此行为设置smarty

$smarty->setTemplateDir(array(
   'frontend' => 'templates',
   'backend' => 'templates/backend'
));

在模板中,您现在可以使用smarty文件protokol来包含/扩展特定目录中的模板,如此

{extends 'file:[backend]blog.tpl'}